REDROOM
PHP 8.2.30
Path:
Logout
Edit File
Size: 42.41 KB
Close
//lib/python3.6/site-packages/pyudev/device/__pycache__/_device.cpython-36.pyc
Text
Base64
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biB3aGljaCB0byBzZWFyY2ggdGhlIGRldmljZS4KICAgICAgICBgYHBhdGhgYCBpcyBhIGRldmljZSBwYXRoIGFzIHVuaWNvZGUgb3IgYnl0ZSBzdHJpbmcuCgogICAgICAgIFJldHVybiBhIDpjbGFzczpgRGV2aWNlYCBvYmplY3QgZm9yIHRoZSBkZXZpY2UuICBSYWlzZQogICAgICAgIDpleGM6YERldmljZU5vdEZvdW5kQXRQYXRoRXJyb3JgLCBpZiBubyBkZXZpY2Ugd2FzIGZvdW5kIGZvciBgYHBhdGhgYC4KCiAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMC4xOAogICAgICAgICkI2gpzdGFydHN3aXRo2ghzeXNfcGF0aNoCb3PaBHBhdGjaBGpvaW7aBmxzdHJpcNoDc2Vw2g1mcm9tX3N5c19wYXRoKQPaA2Nsc9oHY29udGV4dHIaAAAAqQByIQAAAPodL3Vzci9saWIvcHl0aG9uMy42L19kZXZpY2UucHnaCWZyb21fcGF0aDwAAABzBgAAAAAVDAEYAXoRRGV2aWNlcy5mcm9tX3BhdGhjAwAAAAAAAAAEAAAABAAAAEMAAABzKAAAAHwBagBqAXwBdAJ8AoMBgwJ9A3wDcx50A3wCgwGCAXQEfAF8A4MCUwApAWGPAgAACiAgICAgICAgQ3JlYXRlIGEgbmV3IGRldmljZSBmcm9tIGEgZ2l2ZW4gYGBzeXNfcGF0aGBgOgoKICAgICAgICA+Pj4gZnJvbSBweXVkZXYgaW1wb3J0IENvbnRleHQsIERldmljZQogICAgICAgID4+PiBjb250ZXh0ID0gQ29udGV4dCgpCiAgICAgICAgPj4+IERldmljZXMuZnJvbV9zeXNfcGF0aChjb250ZXh0LCAnL3N5cy9kZXZpY2VzL3BsYXRmb3JtJykKICAgICAgICBEZXZpY2UodScvc3lzL2RldmljZXMvcGxhdGZvcm0nKQoKICAgICAgICBgYGNvbnRleHRgYCBpcyB0aGUgOmNsYXNzOmBDb250ZXh0YCBpbiB3aGljaCB0byBzZWFyY2ggdGhlIGRldmljZS4KICAgICAgICBgYHN5c19wYXRoYGAgaXMgYSB1bmljb2RlIG9yIGJ5dGUgc3RyaW5nIGNvbnRhaW5pbmcg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ciwgbWlub3IgPSA4LCAwCiAgICAgICAgPj4+IGRldmljZSA9IERldmljZXMuZnJvbV9kZXZpY2VfbnVtYmVyKGNvbnRleHQsICdibG9jaycsCiAgICAgICAgLi4uICAgICBvcy5tYWtlZGV2KG1ham9yLCBtaW5vcikpCiAgICAgICAgPj4+IGRldmljZQogICAgICAgIERldmljZSh1Jy9zeXMvZGV2aWNlcy9wY2kwMDAwOjAwLzAwMDA6MDA6MTEuMC9ob3N0MC90YXJnZXQwOjA6MC8wOjA6MDowL2Jsb2NrL3NkYScpCiAgICAgICAgPj4+IG9zLm1ham9yKGRldmljZS5kZXZpY2VfbnVtYmVyKSwgb3MubWlub3IoZGV2aWNlLmRldmljZV9udW1iZXIpCiAgICAgICAgKDgsIDApCgogICAgICAgIFVzZSA6ZnVuYzpgb3MubWFrZWRldmAgdG8gY29uc3RydWN0IGEgZGV2aWNlIG51bWJlciBmcm9tIGEgbWFqb3IgYW5kIGEKICAgICAgICBtaW5vciBkZXZpY2UgbnVtYmVyLCBhcyBzaG93biBpbiB0aGUgZXhhbXBsZSBhYm92ZS4KCiAgICAgICAgLi4gd2FybmluZzo6CgogICAgICAgICAgIERldmljZSBudW1iZXJzIGFyZSBub3QgdW5pcXVlIGFjcm9zcyBkaWZmZXJlbnQgZGV2aWNlIHR5cGVzLgogICAgICAgICAgIFBhc3NpbmcgYSBjb3JyZWN0IG51bWJlciB3aXRoIGEgd3JvbmcgdHlwZSBtYXkgc2lsZW50bHkgeWllbGQgYQogICAgICAgICAgIHdyb25nIGRldmljZSBvYmplY3QsIHNvIG1ha2Ugc3VyZSB0byBwYXNzIHRoZSBjb3JyZWN0IGRldmljZSB0eXBlLgoKICAgICAgICBgYGNvbnRleHRgYCBpcyB0aGUgOmNsYXNzOmBDb250ZXh0YCwgaW4gd2hpY2ggdG8gc2VhcmNoIHRoZSBkZXZpY2UuCiAgICAgICAgYGB0eXBlYGAgaXMgZWl0aGVyIGBgJ2NoYXInYGAgb3IgYGAnYmxvY2snYGAsIGFjY29yZGluZyB0byB3aGV0aGVyIHRoZQogICAgICAgIGRldmljZSBpcyBhIGNoYXJhY3RlciBvciBibG9jayBkZXZpY2UuICBgYG51bWJlcmBgIGlzIHRoZSBkZXZpY2UgbnVtYmVyCiAgICAgICAgYXMgaW50ZWdlci4KCiAgICAgICAgUmV0dXJuIGEgOmNsYXNzOmBEZXZpY2VgIG9iamVjdCBmb3IgdGhlIGRldmljZSB3aXRoIHRoZSBnaXZlbiBkZXZpY2UKICAgICAgICBgYG51bWJlcmBgLiAgUmFpc2UgOmV4YzpgRGV2aWNlTm90Rm91bmRCeU51bWJlckVycm9yYCwgaWYgbm8gZGV2aWNlIHdhcwogICAgICAgIGZvdW5kIHdpdGggdGhlIGdpdmVuIGRldmljZSB0eXBlIGFuZCBudW1iZXIuCgogICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDAuMTgKICAgICAgICByAQAAACkFciQAAABaG3VkZXZfZGV2aWNlX25ld19mcm9tX2Rldm51bXIRAAAAcg8AAAByJQAAACkFch8AAAByIAAAANoDdHlw2gZudW1iZXJyJgAAAHIhAAAAciEAAAByIgAAANoSZnJvbV9kZXZpY2VfbnVtYmVyjgAAAHMKAAAAACUGARIBBAEKAXoaRGV2aWNlcy5mcm9tX2RldmljZV9udW1iZXJjAwAAAAAAAAAGAAAAEgAAAEMAAABzVgAAAHkYdAB8AoMBfQN0AWoCfAKDAWoDfQRXAG4uBAB0BHQFZgJrCnJGAQB9BQEAeg50BnwFgwGCAVcAWQBkAWQBfQV+BVgAbgJYAHwAagd8AXwDfASDA1MAKQJhiwUAAAogICAgICAgIENyZWF0ZSBhIG5ldyBkZXZpY2UgZnJvbSB0aGUgZ2l2ZW4gZGV2aWNlIGZpbGU6CgogICAgICAgID4+PiBmcm9tIHB5dWRldiBpbXBvcnQgQ29udGV4dCwgRGV2aWNlCiAgICAgICAgPj4+IGNvbnRleHQgPSBDb250ZXh0KCkKICAgICAgICA+Pj4gZGV2aWNlID0gRGV2aWNlcy5mcm9tX2RldmljZV9maWxlKGNvbnRleHQsICcvZGV2L3NkYScpCiAgICAgICAgPj4+IGRldmljZQogICAgICAgIERldmljZSh1Jy9zeXMvZGV2aWNlcy9wY2kwMDAwOjAwLzAwMDA6MDA6MGQuMC9ob3N0Mi90YXJnZXQyOjA6MC8yOjA6MDowL2Jsb2NrL3NkYScpCiAgICAgICAgPj4+IGRldmljZS5kZXZpY2Vfbm9kZQogICAgICAgIHUnL2Rldi9zZGEnCgogICAgICAgIC4uIHdhcm5pbmc6OgoKICAgICAgICAgICBUaG91Z2ggdGhlIGV4YW1wbGUgc2VlbXMgdG8gc3VnZ2VzdCB0aGF0IGBgZGV2aWNlLmRldmljZV9ub2RlID09CiAgICAgICAgICAgZmlsZW5hbWVgYCBob2xkcyB3aXRoIGBgZGV2aWNlID0gRGV2aWNlcy5mcm9tX2RldmljZV9maWxlKGNvbnRleHQsCiAgICAgICAgICAgZmlsZW5hbWUpYGAsIHRoaXMgaXMgb25seSB0cnVlIGluIGEgbWFqb3JpdHkgb2YgY2FzZXMuICBUaGVyZSAqY2FuKgogICAgICAgICAgIGJlIGRldmljZXMsIGZvciB3aGljaCB0aGlzIHJlbGF0aW9uIGlzIGFjdHVhbGx5IGZhbHNlISAgVGh1cywgZG8KICAgICAgICAgICAqbm90KiBleHBlY3QgOmF0dHI6YH5EZXZpY2UuZGV2aWNlX25vZGVgIHRvIGJlIGVxdWFsIHRvIHRoZSBnaXZlbgogICAgICAgICAgIGBgZmlsZW5hbWVgYCBmb3IgdGhlIHJldHVybmVkIDpjbGFzczpgRGV2aWNlYC4gIEVzcGVjaWFsbHksIHVzZQogICAgICAgICAgIDphdHRyOmB+RGV2aWNlLmRldmljZV9ub2RlYCBpZiB5b3UgbmVlZCB0aGUgZGV2aWNlIGZpbGUgb2YgYQogICAgICAgICAgIDpjbGFzczpgRGV2aWNlYCBjcmVhdGVkIHdpdGggdGhpcyBtZXRob2QgYWZ0ZXJ3YXJkcy4KCiAgICAgICAgYGBjb250ZXh0YGAgaXMgdGhlIDpjbGFzczpgQ29udGV4dGAgaW4gd2hpY2ggdG8gc2VhcmNoIHRoZSBkZXZpY2UuCiAgICAgICAgYGBmaWxlbmFtZWBgIGlzIGEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIHBhdGggb2YgYSBkZXZpY2UgZmlsZS4KCiAgICAgICAgUmV0dXJuIGEgOmNsYXNzOmBEZXZpY2VgIHJlcHJlc2VudGluZyB0aGUgZ2l2ZW4gZGV2aWNlIGZpbGUuICBSYWlzZQogICAgICAgIDpleGM6YERldmljZU5vdEZvdW5kQnlGaWxlRXJyb3JgIGlmIGBgZmlsZW5hbWVgYCBpcyBubyBkZXZpY2UgZmlsZQogICAgICAgIGF0IGFsbCBvciBpZiBgYGZpbGVuYW1lYGAgZG9lcyBub3QgZXhpc3Qgb3IgaWYgaXRzIG1ldGFkYXRhIHdhcwogICAgICAgIGluYWNjZXNzaWJsZS4KCiAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMC4xOAogICAgICAgIE4pCHITAAAAchkAAADaBHN0YXTaB3N0X3JkZXbaEEVudmlyb25tZW50RXJyb3LaClZhbHVlRXJyb3JyCwAAAHIvAAAAKQZyHwAAAHIgAAAA2ghmaWxlbmFtZdoLZGV2aWNlX3R5cGXaDWRldmljZV9udW1iZXLaA2VycnIhAAAAciEAAAByIgAAANoQZnJvbV9kZXZpY2VfZmlsZbkAAABzDAAAAAAiAgEIARABFAEaAnoYRGV2aWNlcy5mcm9tX2RldmljZV9maWxlYwMAAAAAAAAABQAAAAQAAAADAAAAczwAAAB8AWoAZAFkAo0BfQN0AYcAZgFkA2QEhAh8A0QAgwFkBYMCfQR8BGQFawlyMHwEUwB0AogAgwGCAWQFUwApBmE/AQAACiAgICAgICAgTG9jYXRlIGEgZGV2aWNlIGJhc2VkIG9uIHRoZSBpbnRlcmZhY2UgaW5kZXguCgogICAgICAgIDpwYXJhbSBgQ29udGV4dGAgY29udGV4dDogdGhlIGxpYnVkZXYgY29udGV4dAogICAgICAgIDpwYXJhbSBpbnQgaWZpbmRleDogdGhlIGludGVyZmFjZSBpbmRleAogICAgICAgIDpyZXR1cm5zOiB0aGUgZGV2aWNlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGludGVyZmFjZSBpbmRleAogICAgICAgIDpydHlwZTogYERldmljZWAKCiAgICAgICAgVGhpcyBtZXRob2QgaXMgb25seSBhcHByb3ByaWF0ZSBmb3IgbmV0d29yayBkZXZpY2VzLgogICAgICAgIFoDbmV0KQFyKgAAAGMBAAAAAAAAAAIAAAADAAAAMwAAAHMiAAAAfABdGn0BfAFqAGoBZACDAYgAawJyAnwBVgABAHECZAFTACkC2gdpZmluZGV4TikC2gphdHRyaWJ1dGVz2gNnZXQpAtoCLjDaAWQpAXI5AAAAciEAAAByIgAAAPoJPGdlbmV4cHI+8gAAAHMEAAAABAACAXovRGV2aWNlcy5mcm9tX2ludGVyZmFjZV9pbmRleC48bG9jYWxzPi48Z2VuZXhwcj5OKQPaDGxpc3RfZGV2aWNlc9oEbmV4dHIMAAAAKQVyHwAAAHIgAAAAcjkAAABaD25ldHdvcmtfZGV2aWNlc1oDZGV2ciEAAAApAXI5AAAAciIAAADaFGZyb21faW50ZXJmYWNlX2luZGV45AAAAHMOAAAAAAwMAQIBEAIGAggBBAJ6HERldmljZXMuZnJvbV9pbnRlcmZhY2VfaW5kZXhjAwAAAAAAAAALAAAABQAAAEMAAABzxAAAAHwCZAEZAH0DfAJkAmQDhQIZAH0EfANkDGsGcmx0AGoBZAaDAX0FfAVqAnwEgwF9BnwGcmJ0A2oEdAV8BmoGZAeDAYMBdAV8BmoGZAiDAYMBgwJ9B3wAagd8AXwDfAeDA1MAdAh8AoMBggFuVHwDZAlrAnKAfABqCXwBfASDAlMAfANkCmsCcrh8BGoKZAuDAVwDfQh9CX0KfApyrnwIcq58AGoLfAF8CHwKgwNTAHQIfAKDAYIBbgh0CHwCgwGCAWQDUwApDWEBAQAACiAgICAgICAgTG9jYXRlIGEgZGV2aWNlIGJhc2VkIG9uIHRoZSBrZXJuZWwgZGV2aWNlLgoKICAgICAgICA6cGFyYW0gYENvbnRleHRgIGNvbnRleHQ6IHRoZSBsaWJ1ZGV2IGNvbnRleHQKICAgICAgICA6cGFyYW0gc3RyIGtlcm5lbF9kZXZpY2U6IHRoZSBrZXJuZWwgZGV2aWNlCiAgICAgICAgOnJldHVybnM6IHRoZSBkZXZpY2UgY29ycmVzcG9uZGluZyB0byBgYGtlcm5lbF9kZXZpY2VgYAogICAgICAgIDpydHlwZTogYERldmljZWAKICAgICAgICByAQAAAOkBAAAATtoBYtoBY3ofXig/UDxtYWpvcj5cZCspOig/UDxtaW5vcj5cZCspJNoFbWFqb3LaBW1pbm9y2gFu+gEr+gE6KQJyQwAAAHJEAAAAKQzaAnJl2gdjb21waWxl2gVtYXRjaHIZAAAA2gdtYWtlZGV22gNpbnTaBWdyb3Vwci8AAAByDQAAAHJBAAAA2glwYXJ0aXRpb25yLAAAACkLch8AAAByIAAAAFoNa2VybmVsX2RldmljZVoLc3dpdGNoX2NoYXLaBHJlc3RaCW51bWJlcl9yZXJMAAAAci4AAAByKgAAANoBX1oSa2VybmVsX2RldmljZV9uYW1lciEAAAByIQAAAHIiAAAA2hJmcm9tX2tlcm5lbF9kZXZpY2X8AAAAcyYAAAAACggBDAEIAQoBCgEEAQQBDAEQAg4CCgEIAQwBCAEQAQgBDgIKAnoaRGV2aWNlcy5mcm9tX2tlcm5lbF9kZXZpY2VjAgAAAAAAAAADAAAAAwAAAEMAAABzIAAAAHwBagBqAXwBgwF9AnwCcxZ0AoMAggF0A3wBfAKDAlMAKQFhmgIAAAogICAgICAgIENyZWF0ZSBhIG5ldyBkZXZpY2UgZnJvbSB0aGUgcHJvY2VzcyBlbnZpcm9ubWVudCAoYXMgaW4KICAgICAgICA6ZGF0YTpgb3MuZW52aXJvbmApLgoKICAgICAgICBUaGlzIG9ubHkgd29ya3MgcmVsaWFibGUsIGlmIHRoZSBjdXJyZW50IHByb2Nlc3MgaXMgY2FsbGVkIGZyb20gYW4KICAgICAgICB1ZGV2IHJ1bGUsIGFuZCBpcyB1c3VhbGx5IHVzZWQgZm9yIHRvb2xzIGV4ZWN1dGVkIGZyb20gYGBJTVBPUlQ9YGAKICAgICAgICBydWxlcy4gIFVzZSB0aGlzIG1ldGhvZCB0byBjcmVhdGUgZGV2aWNlIG9iamVjdHMgaW4gUHl0aG9uIHNjcmlwdHMKICAgICAgICBjYWxsZWQgZnJvbSB1ZGV2IHJ1bGVzLgoKICAgICAgICBgYGNvbnRleHRgYCBpcyB0aGUgbGlicmFyeSA6Y2xhc3M6YENvbnRleHRgLgoKICAgICAgICBSZXR1cm4gYSA6Y2xhc3M6YERldmljZWAgb2JqZWN0IGNvbnN0cnVjdGVkIGZyb20gdGhlIGVudmlyb25tZW50LgogICAgICAgIFJhaXNlIDpleGM6YERldmljZU5vdEZvdW5kSW5FbnZpcm9ubWVudEVycm9yYCwgaWYgbm8gZGV2aWNlIGNvdWxkIGJlCiAgICAgICAgY3JlYXRlZCBmcm9tIHRoZSBlbnZpcm9ubWVudC4KCiAgICAgICAgLi4gdWRldnZlcnNpb246OiAxNTIKCiAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMC4xOAogICAgICAgICkEciQAAABaIHVkZXZfZGV2aWNlX25ld19mcm9tX2Vudmlyb25tZW50chAAAAByJQAAACkDch8AAAByIAAAAHImAAAAciEAAAByIQAAAHIiAAAA2hBmcm9tX2Vudmlyb25tZW50HwEAAHMIAAAAABUMAQQBBgF6GERldmljZXMuZnJvbV9lbnZpcm9ubWVudGMBAAAAAAAAAAEAAAAFAAAAQwAAAHMYAAAAfABqAHwAagF8AGoCfABqA3wAagRnBVMAKQF62gogICAgICAgIFJldHVybiBtZXRob2RzIHRoYXQgb2J0YWluIGEgOmNsYXNzOmBEZXZpY2VgIGZyb20gYSB2YXJpZXR5IG9mCiAgICAgICAgZGlmZmVyZW50IGRhdGEuCgogICAgICAgIDpyZXR1cm46IGEgbGlzdCBvZiBmcm9tXyogbWV0aG9kcy4KICAgICAgICA6cnR5cGU6IGxpc3Qgb2YgY2xhc3MgbWV0aG9kcwoKICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAwLjE4CiAgICAgICAgKQVyOAAAAHIvAAAAciwAAAByIwAAAHIeAAAAKQFyHwAAAHIhAAAAciEAAAByIgAAANoHTUVUSE9EUzkBAABzCgAAAAAMBAEEAQQBBAF6D0RldmljZXMuTUVUSE9EU04pDtoIX19uYW1lX1/aCl9fbW9kdWxlX1/aDF9fcXVhbG5hbWVfX9oHX19kb2NfX9oLY2xhc3NtZXRob2RyIwAAAHIeAAAAciwAAAByLwAAAHI4AAAAckEAAAByUwAAAHJUAAAAclUAAAByIQAAAHIhAAAAciEAAAByIgAAAHIWAAAANwAAAHMUAAAACAMEAgwZDBoMHwwrDCsMGAwjDBpyFgAAAGMAAAAAAAAAAAAAAAADAAAAQAAAAHPSAQAAZQBaAWQAWgJkAVoDZQRkAmQDhACDAVoFZQRkBGQFhACDAVoGZQRkBmQHhACDAVoHZQRkCGQJhACDAVoIZQRkCmQLhACDAVoJZQRkDGQNhACDAVoKZA5kD4QAWgtkEGQRhABaDGQSZBOEAFoNZQ5kFGQVhACDAVoPZQ5kFmQXhACDAVoQZQ5kGGQZhACDAVoRZFlkG2QchAFaEmQdZB6EAFoTZQ5kH2QghACDAVoUZQ5kIWQihACDAVoVZQ5kI2QkhACDAVoWZQ5kJWQmhACDAVoXZQ5kJ2QohACDAVoYZQ5kKWQqhACDAVoZZQ5kK2QshACDAVoaZQ5kLWQuhACDAVobZQ5kL2QwhACDAVocZQ5kMWQyhACDAVodZQ5kM2Q0hACDAVoeZQ5kNWQ2hACDAVofZQ5kN2Q4hACDAVogZQ5kOWQ6hACDAVohZQ5kO2Q8hACDAVoiZQ5kPWQ+hACDAVojZQ5kP2RAhACDAVokZEFkQoQAWiVkQ2REhABaJmRFZEaEAFonZEdkSIQAWihkSWRKhABaKWRLZEyEAFoqZE1kToQAWitkT2RQhABaLGRRZFKEAFotZFNkVIQAWi5kVWRWhABaL2RXZFiEAFowZBpTAClaciUAAABh3wQAAAogICAgQSBzaW5nbGUgZGV2aWNlIHdpdGggYXR0YWNoZWQgYXR0cmlidXRlcyBhbmQgcHJvcGVydGllcy4KCiAgICBUaGlzIGNsYXNzIHN1YmNsYXNzZXMgdGhlIGBgTWFwcGluZ2BgIEFCQywgcHJvdmlkaW5nIGEgcmVhZC1vbmx5CiAgICBkaWN0aW9uYXJ5IG1hcHBpbmcgcHJvcGVydHkgbmFtZXMgdG8gdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWVzLgogICAgVGhlcmVmb3JlIGFsbCB3ZWxsLWtub3duIGRpY2l0aW9uYXJ5IG1ldGhvZHMgYW5kIG9wZXJhdG9ycwogICAgKGUuZy4gYGAua2V5cygpYGAsIGBgLml0ZW1zKClgYCwgYGBpbmBgKSBhcmUgYXZhaWxhYmxlIHRvIGFjY2VzcyBkZXZpY2UKICAgIHByb3BlcnRpZXMuCgogICAgQXNpZGUgb2YgdGhlIHByb3BlcnRpZXMsIGEgZGV2aWNlIGFsc28gaGFzIGEgc2V0IG9mIHVkZXYtc3BlY2lmaWMKICAgIGF0dHJpYnV0ZXMgbGlrZSB0aGUgcGF0aCBpbnNpZGUgYGBzeXNmc2BgLgoKICAgIDpjbGFzczpgRGV2aWNlYCBvYmplY3RzIGNvbXBhcmUgZXF1YWwgYW5kIHVuZXF1YWwgdG8gb3Ro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NgogICAgICAgIE4pAXJmAAAAKQJyYAAAAHJmAAAAciEAAAByIQAAAHIiAAAA2glhbmNlc3RvcnMFAgAAcwgAAAAACgYBCgEGAXoQRGV2aWNlLmFuY2VzdG9yc05jAwAAAAAAAAAEAAAABAAAAEMAAABzRAAAAHQAfAGDAX0BfAJkAWsJchh0AHwCgwF9AnwAagFqAnwAfAF8AoMDfQN8A3MwZAFTAHQDfABqBHwAagFqBXwDgwGDAlMAKQJhyQIAAAogICAgICAgIEZpbmQgdGhlIHBhcmVudCBkZXZpY2Ugd2l0aCB0aGUgZ2l2ZW4gYGBzdWJzeXN0ZW1gYCBhbmQKICAgICAgICBgYGRldmljZV90eXBlYGAuCgogICAgICAgIGBgc3Vic3lzdGVtYGAgaXMgYSBieXRlIG9yIHVuaWNvZGUgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIG5hbWUgb2YgdGhlCiAgICAgICAgc3Vic3lzdGVtLCBpbiB3aGljaCB0byBzZWFyY2ggZm9yIHRoZSBwYXJlbnQuICBgYGRldmljZV90eXBlYGAgaXMgYQogICAgICAgIGJ5dGUgb3IgdW5pY29kZSBzdHJpbmcgaG9sZGluZyB0aGUgZXhwZWN0ZWQgZGV2aWNlIHR5cGUgb2YgdGhlIHBhcmVudC4KICAgICAgICBJdCBjYW4gYmUgYGBOb25lYGAgKHRoZSBkZWZhdWx0KSwgd2hpY2ggbWVhbnMsIHRoYXQgbm8gc3BlY2lmaWMgZGV2aWNlCiAgICAgICAgdHlwZSBpcyBleHBlY3RlZC4KCiAgICAgICAgUmV0dXJuIGEgcGFyZW50IDpjbGFzczpgRGV2aWNlYCB3aXRoaW4gdGhlIGdpdmVuIGBgc3Vic3lzdGVtYGAgYW5kLCBpZgogICAgICAgIGBgZGV2aWNlX3R5cGVgYCBpcyBub3QgYGBOb25lYGAsIHdpdGggdGhlIGdpdmVuIGBgZGV2aWNlX3R5cGVgYCwgb3IKICAgICAgICBgYE5vbmVgYCwgaWYgdGhpcyBkZXZpY2UgaGFzIG5vIHBhcmVudCBkZXZpY2UgbWF0Y2hpbmcgdGhlc2UKICAgICAgICBjb25zdHJhaW50cy4KCiAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMC45CiAg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ZQogICAgICAgIGRpcmVjdG9yeSwgc2VlIDphdHRyOmBDb250ZXh0LmRldmljZV9wYXRoYCkgb2YgYWxsIHN5bWJvbGljIGxpbmtzCiAgICAgICAgcG9pbnRpbmcgdG8gdGhlIDphdHRyOmBkZXZpY2Vfbm9kZWAgb2YgdGhpcyBkZXZpY2UuICBUaGUgcGF0aHMgYXJlCiAgICAgICAgdW5pY29kZSBzdHJpbmdzLgoKICAgICAgICBVRGV2IGNhbiBjcmVhdGUgc3ltbGlua3MgdG8gdGhlIG9yaWdpbmFsIGRldmljZSBub2RlIChzZWUKICAgICAgICA6YXR0cjpgZGV2aWNlX25vZGVgKSBpbnNpZGUgdGhlIGRldmljZSBkaXJlY3RvcnkuICBUaGlzIGlzIG9mdGVuCiAgICAgICAgdXNlZCB0byBhc3NpZ24gYSBjb25zdGFudCwgZml4ZWQgZGV2aWNlIG5vZGUgdG8gZGV2aWNlcyBsaWtlCiAgICAgICAgcmVtb3ZlYWJsZSBtZWRpYSwgd2hpY2ggdGVjaG5pY2FsbHkgZG8gbm90IGhhdmUgYSBjb25zdGFudCBkZXZpY2UKICAgICAgICBub2RlLCBvciB0byBtYXAgYSBzaW5nbGUgZGV2aWNlIGludG8gbXVsdGlwbGUgZGV2aWNlIGhpZXJhcmNoaWVzLgogICAgICAgIFRoZSBwcm9wZXJ0eSBwcm92aWRlcyBhY2Nlc3MgdG8gYWxsIHN1Y2ggc3ltYm9saWMgbGlua3MsIHdoaWNoIHdlcmUKICAgICAgICBjcmVhdGVkIGJ5IFVEZXYgZm9yIHRoaXMgZGV2aWNlLgoKICAgICAgICAuLiB3YXJuaW5nOjoKCiAgICAgICAgICAgTGlua3MgYXJlIG5vdCBuZWNlc3NhcmlseSByZXNvbHZlZCBieQogICAgICAgICAgIDptZXRoOmBEZXZpY2VzLmZyb21fZGV2aWNlX2ZpbGUoKWAuIEhlbmNlIGRvICpub3QqIHJlbHkgb24KICAgICAgICAgICBgYERldmljZXMuZnJvbV9kZXZpY2VfZmlsZShjb250ZXh0LCBsaW5rKS5kZXZpY2VfcGF0aCA9PQogICAgICAgICAgIGRldmljZS5kZXZpY2VfcGF0aGBgIGZyb20gYW55IGBgbGlua2BgIGluIGBgZGV2aWNlLmRldmljZV9saW5rc2BgLgogICAgICAgIE4pBHIkAAAAWiN1ZGV2X2RldmljZV9nZXRfZGV2bGlua3NfbGlzdF9lbnRyeXIVAAAAchIAAAApBHJgAAAAWghkZXZsaW5rc9oEbmFtZXJSAAAAciEAAAByIQAAAHIiAAAA2gxkZXZpY2VfbGlua3MFAwAAcwYAAAAAFwwBFgF6E0RldmljZS5kZXZpY2VfbGlua3NjAQAAAAAAAAACAAAAAgAAAEMAAABzIAAAAHwAagBqAXwAgwF9AXwBZAFrCXIcdAJ8AYMBUwBkAVMAKQJhAwMAAAogICAgICAgIFRoZSBkZXZpY2UgZXZlbnQgYWN0aW9uIGFzIHN0cmluZywgb3IgYGBOb25lYGAsIGlmIHRoaXMgZGV2aWNlIHdhcyBub3QKICAgICAgICByZWNlaXZlZCBmcm9tIGEgOmNsYXNzOmBNb25pdG9yYC4KCiAgICAgICAgVXN1YWwgYWN0aW9ucyBhcmU6CgogICAgICAgIGBgJ2FkZCdgYAogICAgICAgICAgQSBkZXZpY2UgaGFzIGJlZW4gYWRkZWQgKGUuZy4gYSBVU0IgZGV2aWNlIHdhcyBwbHVnZ2VkIGluKQogICAgICAgIGBgJ3JlbW92ZSdgYAogICAgICAgICAgQSBkZXZpY2UgaGFzIGJlZW4gcmVtb3ZlZCAoZS5nLiBhIFVTQiBkZXZpY2Ugd2FzIHVucGx1Z2dlZCkKICAgICAgICBgYCdjaGFuZ2UnYGAKICAgICAgICAgIFNvbWV0aGluZyBhYm91dCB0aGUgZGV2aWNlIGNoYW5nZWQgKGUuZy4gYSBkZXZpY2UgcHJvcGVydHkpCiAgICAgICAgYGAnb25saW5lJ2BgCiAgICAgICAgICBUaGUgZGV2aWNlIGlzIG9ubGluZSBub3cKICAgICAgICBgYCdvZmZsaW5lJ2BgCiAgICAgICAgICBUaGUgZGV2aWNlIGlzIG9mZmxpbmUgbm93CgogICAgICAgIC4uIHdhcm5pbmc6OgoKICAgICAgICAgICBUaG91Z2ggdGhlIGFjdGlvbnMgbGlzdGVkIGFib3ZlIGFyZSB0aGUgbW9zdCBjb21tb24sIHRoaXMgcHJvcGVydHkKICAgICAgICAgICAqbWF5KiByZXR1cm4gb3RoZXIgdmFsdWVzLCB0b28sIHNvIGJlIHByZXBhcmVkIHRvIGhhbmRsZSB1bmtub3duCiAgICAgICAgICAgYWN0aW9ucyEKCiAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMC4xNgogICAgICAgIE4pA3IkAAAAWhZ1ZGV2X2RldmljZV9nZXRfYWN0aW9uchIAAAApAnJgAAAA2gZhY3Rpb25yIQAAAHIhAAAAciIAAABydQAAACADAABzBAAAAAAbDAF6DURldmljZS5hY3Rpb25jAQAAAAAAAAABAAAAAgAAAEMAAABzDAAAAHwAagBqAXwAgwFTACkBesUKICAgICAgICBUaGUgZGV2aWNlIGV2ZW50IHNlcXVlbmNlIG51bWJlciBhcyBpbnRlZ2VyLCBvciBgYDBgYCBpZiB0aGlzIGRldmljZQogICAgICAgIGhhcyBubyBzZXF1ZW5jZSBudW1iZXIsIGkuZS4gd2FzIG5vdCByZWNlaXZlZCBmcm9tIGEgOmNsYXNzOmBNb25pdG9yYC4KCiAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMC4xNgogICAgICAgICkCciQAAABaFnVkZXZfZGV2aWNlX2dldF9zZXFudW0pAXJgAAAAciEAAAByIQAAAHIiAAAA2g9zZXF1ZW5jZV9udW1iZXI+AwAAcwIAAAAACHoWRGV2aWNlLnNlcXVlbmNlX251bWJlcmMBAAAAAAAAAAEAAAACAAAAQwAAAHMIAAAAdAB8AIMBUwApAWFUAgAACiAgICAgICAgVGhlIHN5c3RlbSBhdHRyaWJ1dGVzIG9mIHRoaXMgZGV2aWNlIGFzIHJlYWQtb25seQogICAgICAgIDpjbGFzczpgQXR0cmlidXRlc2AgbWFwcGluZy4KCiAgICAgICAgU3lzdGVtIGF0dHJpYnV0ZXMgYXJlIGJhc2ljYWxseSBub3JtYWwgZmlsZXMgaW5zaWRlIHRoZSB0aGUgZGV2aWNlCiAgICAgICAgZGlyZWN0b3J5LiAgVGhlc2UgZmlsZXMgY29udGFpbiBhbGwgc29ydHMgb2YgaW5mb3JtYXRpb24gYWJvdXQgdGhlCiAgICAgICAgZGV2aWNlLCB3aGljaCBtYXkgbm90IGJlIHJlZmxlY3RlZCBieSBwcm9wZXJ0aWVzLiAgVGhlc2UgYXR0cmlidXRlcwogICAgICAgIGFyZSBjb21tb25seSB1c2VkIGZvciBtYXRjaGluZyBpbiB1ZGV2IHJ1bGVzLCBhbmQgY2FuIGJlIHByaW50ZWQKICAgICAgICB1c2luZyBgYHVkZXZhZG0gaW5mbyAtLWF0dHJpYnV0ZS13YWxrYGAuCgogICAgICAgIFRoZSB2YWx1ZXMgb2YgdGhlc2UgYXR0cmlidXRlcyBhcmUgbm90IGFsd2F5cyBwcm9wZXIgc3RyaW5ncywgYW5kCiAgICAgICAgY2FuIGNvbnRhaW4gYXJiaXRyYXJ5IGJ5dGVzLgoKICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAwLjUKICAgICAgICApAdoKQXR0cmlidXRlcykBcmAAAAByIQAAAHIhAAAAciIAAAByOgAAAEgDAABzAgAAAAAVehFEZXZpY2UuYXR0cmlidXRlc2MBAAAAAAAAAAEAAAACAAAAQwAAAHMIAAAAdAB8AIMBUwApAXp1CiAgICAgICAgVGhlIHVkZXYgcHJvcGVydGllcyBvZiB0aGlzIG9iamVjdCBhcyByZWFkLW9ubHkgUHJvcGVydGllcyBtYXBwaW5nLgoKICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAwLjIxCiAgICAgICAgKQHaClByb3BlcnRpZXMpAXJgAAAAciEAAAByIQAAAHIiAAAA2gpwcm9wZXJ0aWVzXwMAAHMCAAAAAAd6EURldmljZS5wcm9wZXJ0aWVzYwEAAAAAAAAAAQAAAAIAAABDAAAAcwgAAAB0AHwAgwFTACkBYaADAAAKICAgICAgICBBIDpjbGFzczpgVGFnc2Agb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgdGFncyBhdHRhY2hlZCB0byB0aGlzIGRldmljZS4KCiAgICAgICAgVGhlIDpjbGFzczpgVGFnc2Agb2JqZWN0IHN1cHBvcnRzIGEgdGVzdCBmb3IgYSBzaW5nbGUgdGFnIGFzIHdlbGwgYXMKICAgICAgICBpdGVyYXRpb24gb3ZlciBhbGwgdGFnczoKCiAgICAgICAgPj4+IGZyb20gcHl1ZGV2IGltcG9ydCBDb250ZXh0CiAgICAgICAgPj4+IGNvbnRleHQgPSBDb250ZXh0KCkKICAgICAgICA+Pj4gZGV2aWNlID0gbmV4dChpdGVyKGNvbnRleHQubGlzdF9kZXZpY2VzKHRhZz0nc3lzdGVtZCcpKSkKICAgICAgICA+Pj4gJ3N5c3RlbWQnIGluIGRldmljZS50YWdzCiAgICAgICAgVHJ1ZQogICAgICAgID4+PiBsaXN0KGRldmljZS50YWdzKQogICAgICAgIFt1J3NlYXQnLCB1J3N5c3RlbWQnLCB1J3VhY2Nlc3MnXQoKICAgICAgICBUYWdzIGFyZSBhcmJpdHJhcnkgY2xhc3NpZmllcnMgdGhhdCBjYW4gYmUgYXR0YWNoZWQgdG8gZGV2aWNlcyBieSB1ZGV2CiAgICAgICAgc2NyaXB0cyBhbmQgZGFlbW9ucy4gIEZvciBpbnN0YW5jZSwgc3lzdGVtZF8gdXNlcyB0YWdzIGZvciBtdWx0aS1zZWF0XwogICAgICAgIHN1cHBvcnQuCgogICAgICAgIC4uIF9zeXN0ZW1kOiBodHRwOi8vZnJlZWRlc2t0b3Aub3JnL3dpa2kvU29mdHdhcmUvc3lzdGVtZAogICAgICAgIC4uIF9tdWx0aS1zZWF0OiBodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL3N5c3RlbWQvbXVsdGlzZWF0CgogICAgICAgIC4uIHVkZXZ2ZXJzaW9uOjogMTU0CgogICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDAuNgoKICAgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDAuMTMKICAgICAgICAgICBSZXR1cm4gYSA6Y2xhc3M6YFRhZ3NgIG9iamVjdCBub3cuCiAgICAgICAgKQHaBFRhZ3MpAXJgAAAAciEAAAByIQAAAHIiAAAA2gR0YWdzaAMAAHMCAAAAAB56C0RldmljZS50YWdzYwEAAAAAAAAAAgAAAAUAAABDAAAAcyIAAABkAWQCbAB9AXwBagFkA3QCZARkBY0DAQB8AGoDagSDAFMAKQZhKgEAAAogICAgICAgIEl0ZXJhdGUgb3ZlciB0aGUgbmFtZXMgb2YgYWxsIHByb3BlcnRpZXMgZGVmaW5lZCBmb3IgdGhpcyBkZXZpY2UuCgogICAgICAgIFJldHVy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
Base64 mode: content will be decoded on save.
Save
Close
Exit & Reset
Directory Contents
Dirs: 0 × Files: 6
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
_device.cpython-36.opt-1.pyc
42.41 KB
lrw-r--r--
2019-11-24 18:49:12
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
_device.cpython-36.pyc
42.41 KB
lrw-r--r--
2019-11-24 18:49:12
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
_errors.cpython-36.opt-1.pyc
6.24 KB
lrw-r--r--
2019-11-24 18:49:12
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
_errors.cpython-36.pyc
6.24 KB
lrw-r--r--
2019-11-24 18:49:12
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-36.opt-1.pyc
711 B
lrw-r--r--
2019-11-24 18:49:12
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-36.pyc
711 B
lrw-r--r--
2019-11-24 18:49:12
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Zip Selected
If ZipArchive is unavailable, a
.tar
will be created (no compression).