devicely 2.0.9 → 2.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/devicely.js +1 -1
- package/lib/androidDeviceDetection.js +1 -1
- package/lib/appMappings.js +1 -1
- package/lib/deviceDetection.js +1 -1
- package/lib/devices.js +1 -1
- package/lib/doctor.js +1 -1
- package/lib/executor.js +1 -1
- package/lib/frontend/static/js/main.96600727.js +1 -1
- package/lib/logger.js +1 -1
- package/lib/server.js +1 -1
- package/package.json +1 -1
- package/scripts/shell/android_device_control.sh +30 -15
- package/scripts/shell/connect_android_usb_multi_final.sh +30 -15
- package/scripts/shell/connect_android_wireless.sh +30 -15
- package/scripts/shell/connect_android_wireless_multi_final.sh +30 -15
- package/scripts/shell/connect_ios_usb_multi_final.sh +30 -15
- package/scripts/shell/connect_ios_wireless_multi_final.sh +30 -15
- package/scripts/shell/create_production_scripts.sh +30 -15
- package/scripts/shell/install_uiautomator2.sh +30 -15
- package/scripts/shell/ios_device_control.sh +30 -15
- package/scripts/shell/organize_project.sh +30 -15
- package/scripts/shell/pre-publish-check.sh +30 -15
- package/scripts/shell/publish-to-npm.sh +30 -15
- package/scripts/shell/publish.sh +30 -15
- package/scripts/shell/setup.sh +30 -15
- package/scripts/shell/start.sh +30 -15
- package/scripts/shell/sync-to-npm-package-final.sh +30 -15
- package/scripts/shell/sync-to-npm-package.sh +30 -15
- package/scripts/shell/test-local-package.sh +30 -15
- package/scripts/shell/verify-shell-protection.sh +30 -15
|
@@ -29,21 +29,36 @@ function decrypt(iv, content) {
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
const encrypted = {
|
|
32
|
-
iv: '
|
|
33
|
-
content: '9856092ae4049b8fabe2ee95d93e3f519a39217a63840fe81233eb67a294062150a00c9bd74ee019e484115fbea591b21b7e0e653cab6a0f48e1a21117e3066b8bea81cc6b53e1d2da24c96a8c0a789160c43a0cb6b869a60acb8d8f320e1d9a0c1554742c4a981c2edaa0d1a30ef73a688714f0199c534aecc1eb84185b61248aa00ea3bf8943d83540126213077b221f7ce01f63d850c2549de8bedcd4571e96284bee084bad4ed759a3c8bbea355bb73c5787896e0c016bd9974e96c1422f55a70ae6f08fa0bcb9e299c208ee1dfef6a76d4e6ea5b82358d061a0987bc90d92a15fa1c5c5afd18d8161e8b666229e6dc7ce0c46ac0466c90ff0d293a371917ac4225b77e0168b4d7b6536153808db14f8d7aae7d69b4e359bbaedc70ff56fe8b40a50b41e6efbea54ae9cfcd46aaf31bd6b56a284b442f10e1610e4238af5d2d515e9e91f9c3868771f017fbbfc4196b1408a89cad705c4788032cea8baca4bfc2c5cc5decba2a134f11fac3741b52d758d5666ebd7c12927c77aac03aea51056591ad79a847d148bb23c499d0f994cfce405f007cc9bc031d0f8ad653570d2f259e020a48b3e8a269596495b0dbbd2fc758cdbf51df1fde32092bb8f30a36a413da7db860caf5ba2f198a22f0060bd4cb9becd62ce1d975bfaa6f09f98cdc96f8f9737a194ebd6c061f2b2d6a2d1bc8b49f67e91be8124adee2f01a69495cf17dc4ab4a2ac47b44c68624489517e47116a3baed5ab94b6b7c6e26c46c704605bd97af56d7be289b01e84c8577e779320601c854c8fee998520c21f0439d678a5d58c112c0910ed1f8d1cc5d06685bc96492b5c387d32520729f281ac2cd56aaf3b12de7842483772d86209d82a47613f2922d4d7fa6f224380a062104d4479857a73fb31a8124dff313e9dd37ae8e8370aa1d7e5e41a66d212e72a607ef0633933638cbdccf8a404e19f354a40057699ef0cd1095abdc90e48abe93a3a928f5293bd813a3bf5772aba317927786d9d17bed1d15eaf46647475573ea7666a16812eeac017ea4ffb297458e36676c2f7eff7612cd2f5af6d5e71a1468df61bf2f4200bca2f23a7d26ca63c29e427cce5567d24c070081ec10424b3bcbbbfab4ff91d37218ac4f4874eb8675d743cd475590da9652bfe0e89892de8a366a1fe3db8634c78dcfd3fb56dc8a00f38dc0fe04321daa49180cf7d4f7b6c6edd5e600173fc2ea6eaa1b2d307ab413040f1e742ec1058cbfb5b4202b52b2f5b12a57d30702f8064b11bae57dab0041b45e7f1c7f6f64513901df5f9417142411fbbf4411cfb3a127effaf9fa2f6eb989234e986fa998489cd2553f61d593817a0539a2c95f5d7c9bcd53de9ce8e09d75aa40dc9d4e365ef30c43a5ff129d93b12806a4a4068cfaf08c5cdd701dd85b6cafbb3fdeac3caf94f4157d05124e8252d3686d39adbe77a19c7bf1b9b7469b687027c713dded3f8f52794ec66a1c3b4ed3ea2df76599556453ed273a9072d9d30fecde2c4957e6b0b353475e40a65e31b414e865db35f7b2925d05525bdd7123f7fda7a7aabda4b4286b24ae4dbdcafb31ea21f264beac9e8d6761c3b561615ca5f2602ba6be48d8d7c20f4f938993419e7aa05eb99959cd295d9f26b06a3bd63933ad5d1b4ad68c8640cb0ed1329ca9b1397986e3aceaaf6c0994f52eca2305b1385457c69f3121bdc3d4310094a3f78f206335a9d974eaedb9c9d576a49ad19c645b5e9fc6a776cd11a7826517c64e2dbb5e339a3be673ce481ea4286988faf205a8e4f63e04aa0c6875955e97e2deb2ab5a7ada7d31a36a17409b4dbdcda5ce58c6f9f282b2002fcdfcd650a65de334a6da198e97b9bf3bea60da828ac7b398fc941677a18f433e1cd2b30f89bc8652b56affe2abe27f0acdbdd2f618180ab3f038730b4d7ee0933072ec751c247058eff9bc2d83400efff54940d4ed0dfdfe55495149b99d375df84fffb7a82daba00874a76d35f4c0f15acc0f6d29a1c6e3f9336e211d365d0c2ec764fb5482adb8479cef26f2319afb9cd687f0b51cdf6a823d1b8ab3a9859123b509df32c1375fefde36cbc150f65ffc144ed5f61935dda6bd586c624528c97a4710db5ae3442e617326d65efa7296aee6d9a48d1c10d4b038f5a9b2571797fac9cbaad33a4c1eeb9373d05a3d36d42fe2747e163d5e4caf746b4cd3af362ef303aa1afa95edae6670c8fe028bedc16630974ca95ccf0454034d062b84c7336d0241b553191ec53f9a5518bc3f3425a5b007a6b886ae8c3e93d39711b15e0a6964be0b7e5fb4e8ba282fabad6c0b028daafdeffdb411d7dea0dcba565148c1f07546ef0a65643295a02fd21bbb09c177330e9254214f32fa904b55040ca29bb8f17edd55c6ad054c1dca41b06aeeaf801f95b9e6a373cebaf4fa060a574787b279c7ecdf7c47cb91a3c08eb26c00599eeecfbcb161c1a34aca2909d55c65697dd955a13a04f78cab1968d411587ae191e5280a030c768e2e5bb6bc1e22e6878c2777de75c73180ad56b0c5bb31ae795761b449ffeb47735d3d3cadbc035311718e8f3aa4477820b725ac00f844ca4d1e36b6aab4a4f5ded91cc6e7a07d12992dfae3bc015db44cce13aa2b863b816a862fc60d3670834fbb56dcff04b26f4aee4dad685699a23b4403d1ef1a939ca7c954c40dac3bb7c8f0085a507ee7c0353efa898d01a41fc9dc47d741b5314bc7005e6adb5ba73514b01b90a2e8bd2192b546a40efed5fdeb56b0add5d1beae720500e4557a5e0ca806be5da8eda9bef443032a594e07a1d669253fffdc1da5c0f9665a43af7d274b177769bcb08e21438ef18d14825113575725911fbfabb20921a319a9fa1998b3a18afa17373dafd10089e11584f708207ec8e8883130c82482f1843d26ec547b4070d780418520cfb4a0bfd074c12abf6c01a91dfc300ab53a950ae051650d4c22e0630c700476150cfec0fa9f2a2e540f3644ca0daa94f9bf9c068f8ab215984bc9981f5e16183aba7e23a41ccd8e5df0a4ae87247cc076d305e9e5d9d8cec31126a67919d0257e29afe899d69472b495f05e6deb8ad7515bdf909208f6dbdc1bea69b7120cb53bacc03d75aa6b56f66627bbc9848132d7d04c4cc3e908ba27ab4539991b627bb8ac513e1a19209070266265497aa1572b67cf23f9726b9a2a7b1b57c3a53e98f6c9098d3d87f84b84f1f280e63c24bcee2b754b22d3d12a99f0f7b23c32d30340079b13750c7793f1592a2a52c21956821b74d2d33156677f86af67aadfef36601c4380a13ae82b58dd2bd924c55f0066a58b09c0bed83ae3c1fb94e8f79e4ccba046f5bd44e52a0f468ce6a94e139c1870ad0fd6d19907b54a0a2349d17a0477ecba6d64737718194870d2000150bcb1e3d291d1ed3ac28bef31df1848088ee2bc6d853889b2a4631fd6d1fbe9484f6e85ee5e7aafc4663b77f2c69afcb874d3f40b8a0c45ed1b59a7c13149a38725226c7277b30231fb9e9b4bea5b875566b306ff96b6b39863b38d333c59563cfe80d59187e641d3e406a3ec74db9f5d2c51009f49f6028fcac356b88e72e09d4115332d8e7ab187e24b03ba008966931cb1e91a29ecdd21c361f7b0be461a022b0f7d07e5a06b14b1cae72aa8a153f071caf8d1e416dd07fa4899b57dab027fcd30ce860f4ad528c9cc23c3f1699e585743a37483caedd655fbfe8b6ba323098692a3cfb679711f4aa986cbe8d34ca652b515037209d615499fb32851d451d551c4feafa8ce1dddd5b44c1cade2ceb456391813a52ea3b4529fc90981dccfd0378c50ebd9f2a591b3e1f2d91cdfcde7ade7407ff06a00ffe216b444832b03ad25bcddde2dd793368a0b0d6a516b8d8f3eeecc0a1b4ff8dcc98b1600c9024965e8c7ce3318b3a44a65e67e764356555cfdd28fedc802626baa18cfda0513d3cb72437748e9061b542c929fcad086377f346bb0635e22a723c48f5a2e8b9b322b9bcd284f211140dce3648854d1a845d908c98a5bbc5c0d4a270e2098545055cd7e858befa82b717a7616c586d6b0cd430fe94fe0c38749884945b04eef75f6f809165e90f367be6d7627d4aae53b5c5469239180876f4c4775c8ae257200e3056aff3185f7b4da254b9067b5944a6c3c9c8406c12b8227ddc215a248733855a5e7157489b89e401de8df448c1ca68e51ce1b14609927b9c9504e853d34063e69ce4648a521189ee434db5470f332911ca4a216173803f4c3a7bb66d8334ae8a7e26b326bc098740179115fda4e7bda98ac820a9da9c4144b2ac2df63d7c65e37d14458fdbc333d289c4a4ba4c4c770c8ec7151dde7795227b5ca02802bbe846bfa6677a286db1f9f35f0483620bd2dd0e81ca75a7d1b96d7f2b07ca42ffc11ab390c275ff47296d7831fbd1c4aef7357911321dca1a51a772b077b1df7d0e772ff0491e48deca0a0c8a95c93eb27cbee42b56ab6dd9b276176b078f3291590ca1769472d4111c918f534c4487defb48160a7a53ebee77e29be35e385a60bf69096dda6ac28bf2be4b56424bdce809ab48b9b0ddeb6cd35fe9e8f60abd05192e724498b7ed9065ced0ec2ba9d6555b2e1d4f992e54e7ed221b62304a7fdd86823827e0b97bc5f4b98765d753d455118da608b6fce01b05b3363e8cc2c142579ac22b8641a83f68f517b142002541842086559352adab6b165a7ae84e74bb87235d0cc6e5109e59c0e27fc658d028d04887a8331d5db3016e3ae35f1c6097960315e30e1cbd489d43eabcaa5598d09b828e2c13b5c24d385a8969e7438a01733e3e41470f4115a9085598c9d520cd44756f86f8b6ddf33d8ccacef365ee004d74e11969ac7461cd24e71b7a092142066cfbde7b70649d177fd1cef78503d12531421cc039e9a8090c1901ec5231620449befa6b56018e52627d0f2224bc94ab6d0b40c2400ad8efde6754f390251ce73bc869d9066b9725a17a042bebfab60e87a48025ec2e11687484c3e5aff0a3f2b1a42c0f96ad592499b04fac2ee220a99f27c52f32a4a028a6729338ff8ea76835f60331d62d04f22022af30a64e44068d4352fbc46fe302e64f31ef8040ff9f63ba3adf16edda1311896b6a57ba5d2cd0ea7c384975239304d8b7eccd6525eea61b9ff448d7f2b05d939242423a278a5056ec115654d088ba047954d7c4a05a6d139df73921825af9d43130644eae30df2ea78f78c77c7781c14fd251405607ff8c3dc3f59beb9cc4b4a83d5f00e60486489ca70a48a1ad51a25c5c3b269be2e97b5c56631102cc0de40b4c6ef5b991984c4b6893652ab893e243b074f3f2675b0addfa799481a1c6d7a8598e2413f3343001e036b2ee8762c8d0461ef23e39d6d9731204357e881ea307337e879bfb0260e323d09ea9f4cb2282f213f103a8bb55de53efdcd4979dea22a2690696200d2bd0ff9c04241ffd09854525ff37cf2eaebb5e0337cb173b29c34d76f3196c042b51c6f32b980ad2f0455eb3c5a59c99b8baaf03284642ae9bc460221e22b4f4dd131261ad00d94765405b8ef4e836d16fa8f237f60b39f52544ee07ba01ef69c69784c9ececf120800bec35219b382d9f74e7c02bb1703448e6ab25f524e22ed895a59e9307a97eaa528d8ae9ae74ab0cec12543f09d543cab3929088a5b19d67c00b9d1d52dc9386b7b06dd0fedb8df65ecce689051269e76a8200297543cea336ebff01bdd3fed9d357c9f3ebe954f5f5d71ca0727b7a063e80d937b684a6a4b8ed277a26a0514ab95a29d971f404f47a525651e22a3525a6ccf3dcf475c0f7e48259f2ff0fc11c6443d22acaae3f15d0d4aa8d5372b70f9657f7457b89ab60b2be2028de3ade408f1e3a843eb87200c1df3da44ab2a697073d65fe1bb1c394bfdc1393407454dfa3e022fa36c9d046ed7cbf0021f63f54a91176b6de67bfa134f4a5859b06083a49c8677cfeace566005fbc821ef26683971e2cb6dccb15a2fa90871a0fc138c4116ec3c3ca625c5acf11e72b535ed7e6dcf5d977ebaacbbe6c71ebf4de42dc4b0a8c1f2a76c9ccf953c01bed3af2e9946f1789ba9d5488755cf861f43bddc1354c7a396b9c7a2887727a74f8b1b909c714c1986405906e4fcd94456f75d24aa051485dbe561e0fd73fd93658c8fd64d37b81445fe4b2383c4d4b1a01867cf131502b0f342d5e933e8edf530e84136d007803da62c64f7d9dce240c8a184e1681d76ad8fd5f7abcbbfd38a881802cf5c409e2a58726481720227f1f4641d80fda4266881a6e0359e075182b808a599443fe9284c55283b6cad2d206a305dea619443cebae5bf45561f3f41ca842b0289346e6ef433a19adbd116cebccbf6267a1a3913981dfec23dbb8aa383b04a2c0796e4938d44991f1696ee4abb3839bfaabbde2203b5546e07c0abc506f82b76f983d083e184303e21883eed2bfae2d40cc91dbd3b5c3e1004983288bb9b46a7f227092fe4e35c3d7ff1aff2e1882dc65ff9ff6f91945611897de0cd62ca10c0a2df3a1e31c69f2960ff7407c2871b75467ea71581aa8197ef7215c00c799cd19cbb6216eaea4fbdf18f595a1dfa8ef09f0e8ac7533b3a8d215006bfef993ffe8839fc43d7ff3975adea20ccad65ead6484fb6c9b933c76024a2338b0317961bfab34111023ab253d0550925ddc0f178677692175476b606b602aef9d4d633a51a56a4fdd91c9b35a264e7c8092e1f598a72b9ca0daec0419995eb984d6a03d5a75ddb1592dc285f00ddf37ec7fa737f201163abf6cc7fc1a2d08cfe49b69c8b980a6d4fc63384e29bab979c51ecc873770f0cd77401a9f6d5a8c12b84ed66c31f65198283611876dd80abaa2cca0fb3b2035cfeac3356124a314eed9e04541e5825191eaa0c0c7b1802fdd49577e26776f76ce366a2a7031895f45bcff8126c2ffd70ebbc2d40c97e4fd1f1b68f8e74987b3774b3fda6514def2dd2690fbfadf3e6e144b59b67f35cd53a9344dfb0d00cc1013a914539221ed20fabf578b269f584ad980506494583bc0e3dbc68b16d0e3e952278ced4376a501fefe2b1029209826254602875acf8bbf909c8bcc7c5cf583037470d254b622ddedae0fabac568345495d88bf57fd42cf49b65a1c387572a3aaab58c223c8e3fb8e5af2308a357a95a84bf40ec21b40d6e09c2f2ffca3ab265a08df93f7b9cd6dc9a34ee7d57f6a15872312d2d71f8964eecb7365c457a012d92d6da7f64cbebb3f48a82692d1bf209f3f892fcc8a41d1c7b714d80f4f1475ab79345981384c98e56284580f82b56e080028bf69ec0abae942ece16bad9bf2cb29c36d2f1fe46000c588e84536022f7e2b7bf9063981db7b9994a32907ebd85f0bbe4fef5ea69246a88f951b3d1613e6681837b0b822269b2dbb525ae1349beba122566d4911754dc641016aa193be0c6016c363399f6003862c5933555cdd3434c6d3885699fcc747c4c75700aedaf40c2d5ca064cedfb1f4cc88dbe80338e8c1e4a2ac964fd0f697ffb2942e089f11b2a092f56aa8939ad43560ce8765ca84a0807d6bfee4e94be6f8d9dd7c0f0e743bb1d32fd4dbcf939c03a18f8376fa53b9bc1f268e670579840f49dde06c3e097f178e6f96e3dfd0fa555d1256ccab4cc7719b5907325a8e439596e75eca909896ee14ba1c0e42e8718ab93bda95288c0a6010f6992d0da16eb936218be2b21a4bd08eeee94529c69d3a033f85cf964543d1bbd92708aa3a256ee5412b4fc46c8c262a2ed9be236efb328e695d4a55941eba9d3bd1865f60aa6a8afc7b9d6bad9f54ce7162524ad249aefa553de7c3639ee399df45739e5fd407ab5db8e15eb5cf55dd84741367ca4912fb057432eb89f6d1a3db803612706b85d9568cb79f385aae48895beff1e913f5d71c5a3dbd28338d6ffe4ab7c4a9c07d65ce314315f7eedff6ee7219cfb9810e678fd32e6148785e069b838035c36e12a2b306c54bf20cfbf9f8ec488e95e3f5eb17f7b231277565d437d200ee9560a01a2d8843457855c19e162e729e5e90de6bfd616159601d4c70612242013dcbbd75d8a117492bd18fc6286e044fd1d50f50a078ef76a887cd53300fc9896a99fa31c689540f5b45861eb4cd93fe66891da496a3bc74f25c9275c5812d5235827a021e227701fee1ecd565dba83a9c9728325c7619e8f41ebf16f1f6a6412d8e1ffb2ca84127ac3ed2c296540355c68e1444d3dabf51cdc76844f1843575ce4bf4d80e40a24048214f323b7dc6e7a36a2d411e5496968752793abbc3957273e335c70240bd7d823a07fb226b60157eedab3c906d43a7b8ef8903482a0e7be49baf04ddc3af212228b4dfdff33ecf078c2eb92475710e7d22127884ec1881075eaabf802e111f0068ce504a7abe98badff7f4dcf9be2962dbfa05eef0253a9524cd7002a129134cf98bfa171bdc619ae895bcd7826f542a7909575206711a78a2154c8b52662128c67d9e4a970d8847d08aafea85069369a4cd9484c68411bb1cfe3fd76ea7f3f3b6f74dbfbe0b9bf7ea0208ee087f17f3088f93266849f3a28db9fdbf6e3c547ae85437112990a6988cb875876c88ea1bacf7304d93f37fbd9e9063126aa351fdac7ef29b9ef5e834507746e3cad68a68cc8b9d7eeba681434c1ed07fcf0bf9b6b7beebbe2da2cb39fb508ed872c4965a74a12f16ff49a9f427f8650f5d9f3de0a04b71ca7903aab0e7828341ac28b1cf416859de5dd884ccd9f62c61539761698a8966e57aefb256203eb120032366bf5b5465c3aeffc4a2ddb4beaef14217cccca1f862fd2501cb9e7617bc490e7cb772c579efb8f9d5e0059fc655254f24924038be1feb963d00269f23d7604a9b019abca25260fc097af17fef03119d5cd51653b3e6c7022dfaa41132cc4e3ceef7629654511d73d2039f5aebd7f488b13b7d1d1802ef174e187327a58689bedde4de7fcac6a14d5292d9106cc290b94170238aba6903e51b957d202897ed78955aa186411c04be4e9bee976584b1554c7d1a14a30369b6113e42ad4e12ac39a0b364e56bff0b2bc7dd975eef1fd1c80603f8e92c6df12793a78c34ccdd360f797f3efb308c95e4296dfa25fa7ce309f18d1423d430a5879a13134238e0323eee8abaf5c6cdb4005df971f07c0153ed5444df8c4075741645f0fdb2e5c30a61fa73972e1777edbb26416bfb1fbd17c1133f9949a01366f4933b981378351c19c4204f757930d9b8aea3918d1c06d5468013e5c2527223d112177e06f60a144f2ce501717c9d1e07441d8e33b27fa691bdc50dc6368fea6124c0a9c3c634e667e966883ad1d0becfcb51fb595edb5b895e02a7e0b6dc03b5dafbe3f16ff7935a7b8b5d7a9dd71eacc57eb77e664a2c7001d8217e2cfbb637bb0c688b87bce26a2485b8ed9cdc1e0479cced2ad6db01715cce24d9e90631111804d9b1b96dbfa3e85f0c30278ec49fe181fdf4fc5a3bca8fd36eb33ee624c85537e16eca87bb0540329022b369110175c3535859caea56e880eb8b8c2287340c89d6440f2940df45d2159c3ed0d697e9a023fdc25ab355e0e1d3e0327c5de63894e32bc1e7fdd846460f2ec88d4f3bb5f37d3b3c3844868a54000b0e8de30eb55f0c9a5ff984289d048ecd7d74bb79c44e11be2caf68aaaa26fd4c4c3aea2a0c6917668a76811f9cdf532df02b9150aaec78acade3b33dd4f1dab2884db94bd3f8b054f2da4a1b0df126c9ef75ce46eec31e8974e21ec9729686b633aff6036353323d383294d3ce9def2af170a6fdf33695faaf9db25f2bcd91c1262feff42f121ed25bf8eca2c3b252e692016fb7b815fb76e040554f396e418491bbfd090e662f160017f6641a26d641f7ff38d85e36c4a054f8f776838bb63fa789e046ab0aeb9d4f4e190fd63e104bf9b369b7ae95591c2b1bcbff5a79c7acd84312dd3e6dd53a27d445bcacae814f8ca6da322550a186d1da6de496e57478afd4cf562f2bb7ffe1f35035d9d8fee83a43656301871f0181b40a72740d94485e1d3a0af526bf0ad18ebe9e3ee04dcbe9406691afe539bc68d2f35b1ed396543b74c579cd53263785d0c1c1b42e1643940832dbda9bed0862c01d3a04064de57af704b199c8e405a3c3f200017cfe6b69a5129ffb92bf3e791e7bf45f6f758750e9beef80dea2ed658acf0e73d9de963d9fc6acf07a4bc701310a858f84e7ef9c0ab3fe55bbd4260864116b5d4ed0fcb919358714d9cf54db5921d3023293b8cd07fc62a9f12ea45c27c3e9a9c5ed5dca00bfba5572f4882726552960b0984b69b04eb434f3b5c518915241629c18be70886a37c3cd4cbecb66b63958da62ff54f44bb8cefe7c8638987ec50b0284fea21075da35d40a1d7026651499bbc26f6ec500e5926845f927cd44ff93d438b841e07d444c049fd15a3468a510a87b379cb05de22278579837e4c4ff725b99f1ae91acb68a29f95ee89ef618dec9d0daa420266d73d8bac8d7c804624c0e5a2d2396301f6afc7c2f09428b4635b4d301e3e006ed56fea6943ccbc61387f57ecf189da2d6d58035cc9e0bbdaf27a4a713809abeb7baed63dc915698f380b128018a9e2d8030a8d07f510251f97a03e682a2ffe23b7665cfbff60e48e5ab310dc9bc25624de270bdd9301a2d10c408fca6d314aad3922aeb920fcb8a0c0b8a46b51fbee3e22bbadb2d48adf77be9f6d9362e489dbd470ba764a70e9aaa5bf1acfab136fc655b6f024fd48fbe3c4d43aef718fa0611cad17d035caf5388ec6dc004209724c7df7492cc5e854f46542fe805dbf27fabf975ad989ac0e0345037383d1cbc32a977336d79bfa37347111e8f4fbc3d3d92e78b3a58514e30c15bbba46837b5dcd397c1b12b1bb9a74693583e21d8aa140e0eccbe56dc10d35ebb2215a26415feb97b36c2e97a7d19b39139135a4f61023993bec0c8b654c0846ba8bd1ccb2fb678682d194c25e0361f390cb17cf74a0ac0a0b4f355362c1232bc57464ed73e85283572079f2f4695fc899b36d0e6b5b5f2225981ee39c77c55e21b7b77031508a75278a38db97cfec9380dbecb5bccf5a799e6f5c30cb3bec235e9eca3a6bc1b99ee595cfec6ff16022f62252d18a05e82eb0a7a19e766bf833009502abd5c988400a7062d1d19db281a57024e1cea018f47f2e8d15f13e340bb2408607bc385de1c9b043564c55d27deca24b4aca88eb7c7528b37a34338449d13a67a5f09a67d636643f76f5af4871b781159d7688d12df2314ec45f1d1a89779434900cd7a6bd2b16ef07fe5b2a5ec64e09a67fdcdfa1a0da469b4818a14c144bca7613e6c6bc45930bcab8dc7fd477707f164e679265cb52860ee0dbf32a4c3955d1c18bfcce1112ade2a7447d4cdee03e88e10da7ee646430254b6eccc4fad2ae05a0fbf06827328be495b4d26227ac89a6a311a7a7f0e305777e08442a5f796b5ddbd3b105f4a9728b6582e22c19193d087803b24ec33c52e72bd5e4e7c23b05eafb730ffbce3cd686ad675b61f16651e9a0c65070b0b23ae05c079123d21a2676c32a0414f3df72dbd277d6e690058974a3e9c85a7bb3c3a8436358f07a2cae0016aad0a30d4a1fea617115a1a083282c2ddd99fa290922002d6a51da4e4b267a4d592f9bd77ac7bc1e8dc2303ae4a10ecb692947c591468396020c93155afa4fc08cc2ca0fe12271c8298bfc03f693978e6c7089a2304cacb3fe89476bc1472f5a680ed69373a4ab72c30698f8d159187fd942396d501d8d6b328ee0d642526814203f7508eec98fc6260034497e0631235ca96ea9fb5769d49f0970e3e1343983b01e0316e92ec7ad743bb78910b1f0be98618407bbdb5b0c3c589e35d59b2378184dea262e3bd52607bae89bda3a98aad4c7220e7acaadec3adfe33a637f508b65a062a93ec325aa352ac76a3ff64a3329a1c9ff4209c83ff21b700cb29910ea0ad89b43dbcfa09a2c3c51a9c4e1c4dee26a8862e9070c4e9d56e28505fc6e68796eeca676bdbc25ed6c711da378173bec4bf9f3d52c60fd6773c3b1618d38fb94e75ec7969bcb9bca589aacf9d8bd85916019c46309ccb126e75855959237eedfd937101492582d53f0f4a64aa54920fdc5fb9039cd6644df609647d9d45ee67cc11c8d09b249fa25a996d5aeb9396b19555fac302dffe99d6e430cfa49ec9c93cc1936b1c47864f49530fc1a1170e42994d79f1cd7c5e174943ba65733a304be5db0193eef602d22a1245d62471c270efce6db31a26eceff9e973df4744eaf68f4cc17112c6b83653bbdf80dad9f79abc47739d6c9150abb6123a3f85040c9cb37e298b0b27a57120fa88c5d6c337d38200696fc32c7442965dc2e60180efa4a2137afa0cb49d574192b73e31cd7764fa09c288fb57b9a32779f41033011a49e874a6f8f8a4172eae8624c2acdb966c75626c1a3e16b992fe41d401370c755aa7e3b441c86dc6e6205b01f6b4309cbcc05c3a46a154dbf106686e4186eef5fd68f57957298a9f3ee6a1f206bcd714342162b4e2912f9ac572084cbd06574436defd2eb02963c9365c3bf4310e75f019d67ba149e7f1b6e011f3a6107b7c8388682d473da427a094b714aff536c3adb1aa0694fc217fffbb018b4901268547eeef27fab2927d5402c3ce1b7042d28c34fd3293388aab48b077d3d18a75afc0ac76fbe5d83df728b3f780a0c8d179fba6ecaf06fe38a37ff65c39b7912e7b65ac75a7747972d7b4e7a20860d48b98887107148d202938f87996174930b37e8a96ae6ad97068eef24588d5da4dbc63cd4ef6cd75b2d3fcdaface6fc17b4f37da2c8dba112fbf6d730ce4f219f4e3d0e604b63b35d74a1e4d21358db0ff40aeed4837110286b02aeaa5a94e1ba71b5cdde0ab9bdf36d8eb92fd970b0730815722090e3a6ae11daf97ef7ceb78311cb4a0f7e0eb5be0032ba5249dd28c41c89d2acb9974c8488dfddeb814f59dab5117d1b742ad789610915672c4ea575a6d61e280a392a8d707be9d7f79a61fd15f5ecf3427385bbfe30a6467103f8bb763700232b296d1744c17d5d1c685f5c9fa2fa6177c7c23b86ea28bec56320c790bdf6e6a06018f3f76630a77ab6c82e9dd71f87fa8334b8788e77ed284091b4cdf62728a6ffc78b7b7530bdd4244957e33c1aecfb3b776ac1d0d12b4ca005ab4c25727a1d95730dd6c27bb603289ab190f5940c77f1310f1a679a6b30f4f491e94141251a25fcbe5205055a2f464420fcef066fd92cda45b9486971e4cfbf07d1f57cac1b8d245b09f00c8bdc0ab43a31241991632bd93f65d83239efe022c2e2ea7f06e59422755df4fa424bd713283d8c4916358b7b330167f86541b9b19a8a8cd7be94e1debe139dfb0b836ca59e98be25ebb37d5c5352c993f368746af936ba9d40c9b7fa7db1a1e47395d7071f61f967aeb3abcd7b16103d403217b6597fe9bf0264389b062bbc9f29095479d3032b2d3f13d5d264e428a20333b95506848fe933069e14fb0152a975a801d49be6bc3e5974d34c6db15d8f7cfdcbe02343c0602d3900f28ef9b1e7ad10721de4d01bb9087c80eab01d9e129b00e3144e915ba98731dc1717dbbdc5375e945ec592ee8aa9987ea0b76bed0100140ba1e3015d0da0b4fc73e43889906085bd726ade0eb136038d91e032ed43346b5d8556ef3836da038d75cabaff2d5ff110cf9d71c912ab65d4982a46fba3bf96bbb81148295ba770a7bdc2294787af6e81122ccc3a84b8829863ccf7f513f1d494ab319ab10452d3713404d99b89b3950577e891e396a3f8e945a0285d80ec300ec70ec0d9e15e9723e49092f1c2eb97c6ac37210052f95b7623049ae6a4140a0a9a3af69c4e7aa3e4987dd8151f45276e174bf8d89b24350d017187ba211f9b13f8c4e7559b3049f85ccbdc144bfe5626e99a439b507db4be59f0bbe87567da828d7ed2b4f4d87943039c0b42b5fd61149498e1e35e82b65c74c4874cf87f2c82651c83a9ede27732be8495655c5e104aec9fca8e7a9d3cb2bf2455fb3af2af08dc96cd448f297dcf133648ed97684346c28bc7ce5e5dbcf4380d425691d29e8ad20275d2bf4593840d65c1ec3c815fbc3d43e39c36bb3d847731fd58dcb75d084be764f9478cb6746c8e333a9e5123c37808f216e881c26c1a1e38184139ebfd7a7cf05a2f45a590d1fa8aa81c7fa47760a83036c4851387818e9daf8be958ad5b871d876cad5c0ffc417419f5efc7315b68134372ad64c166418d26a29d57029534ba68cec5b62ed553f146452dbfd6b62b5205a264132d7de7df5ccdbef419e8ccca48d31f70f7363a0581c7f89d7909049e22905d040b0347520030d31f514a6b5a26ada3feb2093217dc925da4a793d307402cd3cceb6022aec9bfb67fd42d25f42050b368e4ace6ae727a5bb8668a81d17298f3558fc7814378c4b364c3219484cb9294b505f8c26c42474f604848cfc39c9e27806bec41906cf5879cd1228297dbb9e12cdb05ebeddf7e2fa09bbb6712239ab52665203199b3c710b8c27c6b95d914fae061765d599b70fba9825379eb109eb30d3cf4ee19ce64915b79bbd1e5c229dc07c1fb9fa00af50d7a22ae149a379b9c50b86799ec6c5675871ad4d6dabfe7a38101093853a0aa104b1d262de253f3f7df2e63fea9daeb55f3e69b859401a003858275df422f07b4f60d5b904440e5c8bbaee20009319bc135e095db462c0d012e5c73df7604cdd409fbecac98636e9a5db03edc0775011ac99b7d46f841e98c725d9c486562419571d9400f547b581c52c9721369aa92485453f890c956bb6602cd038abcf07eb14e60b50e5431b21b20a9fab5664a4fecd21f0d760f661891dfb8868de40590bfb557f23ab1458f286e582430016e3fd7f8e0c5966ab7b0b9abc0633ac1bb568010ec7d45cc59def2d56b14e85a28afa5c9b62273aaf6cf44641171785134fac6684fa4ddb6f0e1ecd29c59fb250800c3cc56d70021319bbc0275bdbeddee1152da2cbdcd96a6c84fe865e9ab9a7925d5faad59df858cc3376caa0a2606e98efef2d0d89e34f3feacf0d9c99ed37d3825adff553f77208f7641fbc5372497e95da0f94dda7ff655f083fb004df4b0e43f102ae19a287dbb5886ea36d14c3d157faf324cb998981a809baea11fd3d5a5c587c63369aeff1139ee859a7b1eff9a5793c748d1828795efb3d659557abd969cb0f59c6929999f873dc54b10781ae2f03d4b6d5f227a94e93a1ed92c3f78ede31627c3d445b0128f66b87603416d6cead44b569be25e9b519642e1ea9966ecb267f6b0b86e355b839668fb229c6d419f571328d7926380fea7843116461f99a6ad0c1da55e5b451a585618be34ad7efa0da1e349ebc376b56695ac6f2fd9a309ea5faaa6531427460f7fa98961254dc50e158754ba7823858170dbc80dd3c21a39379732c6ba617e68c991ff60b4e02dfc7ad8663a914122a9754d8b295132dca1b03faeaad46c5f9cc73bdf2cf62903e54923e8af1f155dfbdb20c95c13d7db27d0064e26edb0415403bea0d8a314bf6ec33581108b5bafccf89c8cddcc8914016ae1e3464d5127ecc71207995c386bfef62ed1adcdc45414994d8f028d2157dd587bcf342f42b97eb42efa7f9644f7ca2047a2a9ca6a3dbb79f62aab729746c7d4a3f17efe6b51553f4612961d686cbc6fa704e289f837f3edfe46b95803eeb8a7f52a445af3235e25eeace10965d40a477c8f2191cde2f67010e6328d6f744be0088b20864f383142869e1cd93aefbfad6b6a34e4f9db335ec32dd499e87705b55eb06e4e90e95be90494c72f0ee38bbe7ded22dab81366ec8c69c0e2608cf267181d4305c7561e4f450237cf0e1237d220f52da7d0674c8b662abd0e40796d896e6816ad35a2a47ad072e3b5df01ba82122638db4d89ff5fa7a0b8db0a2a744a4b25e6ff22a71c745c97f31ba3ec4be22107366027b8b8092e26b48b4ef31aa382fa71e25f19659e9fd1cd4e76bfff490b0bab1406acc5e88b8a2599f7412ac4ee648960eb018b50bfabadf3b8c3d04313d7738d42824b91d6642f970b0485a4ec736d9abb57ad566b812035d03dda1b553f8a613139b7052a2ce1e77a83137f45c51b8fd0aec5b660a875af4b547673a1e7e2c10ad1d6fb4c9a9feaafcec479ec46040624cfa253e9d1d6f128754f1fb27eb132f0618ddfba8deacfe1e05a4040c6b6d6355255d5432d2f609c0ce46bb5bcf069527c3bc483182cf2d5e75eabf05598feb79c0d25dc92aa36409ac8c2f8e0f220f5fb4bd31a18c200c6cb7f38e43b67925b4612f24c2ccdc617de5bb88923e68decc5dbb3b224dc57506d5d23e03314dec0eeb134b8f5908f3691d669c64e37137f8852e4d51cd36fb02e982f09cddf34b23534c1d38ee5fd158f58723b9064322dee92cd69eda584e52239fb7202a4743cff54f0285ac960e32fc36e0a184a498a4fa4d467ce64ec8ee4f46c9a357b7ff3893187c9b2363b658d884a9e02b3c63896c2152c70ab9548205a4a71e5a263e5fa520347b1f7d57b86d64e97402b8cf801e353b95c3ae59b3a127d8715f74a5b54f6aac76fc4d2b1a24bd09441016f0b23decdb0565b03680d8d222591f198656f79a69e748a84e533167722945683af26c3551e9bfed09f1c8ce19f8d5924b3f012d998211ea5947cc47fb0ce43939857319d13d9342dd90f4e916cedaf4e0ab2d6083174f90925ef530f841760c2b6d7268a9339ec67b7aa52441ef48926329751258e2a3e70fa04618f008c46766263553913586d44f6f2fb2f7c1ca700b5523ee4caf9e323d275f95906dbcabd5089e7e79d9032eab3c230768ef6d9090579686f8a756fa9f2901c092d959380c4da0ed34bb26d1e99ed78a34296015c59550065b7ac651d90f9036b81191a88cb4d4e356b1fcf2ab326c6d13b65a896b14b12a70454c800766a0a1f2d2703669a98a35e798e99188ae55a30ee24d1c0a74729d7dac5c10a9ea7471df8e0f91840749c211da1fe9088539c7aa95e3adf8e79965cc8067e4e11a6b53ebb66ee606bce32d5cba6483c1c11aa565c765e4a6d63520d9666fc02e295e3f8f6c7228b8562b73f6d8a5a50b07a23781a0b6e0652e71115abd0a2994ff0f580d90b83b93334e22f69006a8027a511d0e54afd9c44a3a51706e6ce3bbad25271807aff4282d413071d6926a0728c5a2f0888d3f2e2ba84999001f6c9cbdc8bcd80e7bf838612350cde614022773fad780b89722c2b8f44c3c74f5faad690a96f085370dc6a4a747766dc2e4412ae4d75468a7ef050ddb2613ef466a53505a491a7d000c4dd0b2b32c551a8a35c8b181bdfc4c49c97dc82f4119d268c63535e1daa0c77091b75f62b1ab5500ce0566f4ac113751a9160b80d6ab81d712e8675399f18e412074a02ed42fc6b0f21403a512d38dec8724d19df612a3aedb5f6259ec61d80ce18c2218ee7b253ab4547887707d5172ca001b97bc2304322fb1d1e53113d7b6ad684b66146ccc7ce5d2c0e422c36dc7b89f151c3434c362b217a5cee1ad9b93952d7ad9b4f1bdcbd4b479b0a38794b5a26d2eeec29fc86d8bbfab1eafe0980f8de673e9507bab8e8af7d47b663169790bdfb30de31cf06dd623c59b8023df5d51938aed15facdd191aee96af5c72482ac980e07f2391dacc5bada81735c7c8c0ab97a1032a236f6d54bd386da9cb85b1400ca2df4a9d2223458f9234ab410a27ac5283ebf61332b8ec75f4c3e971ec414e323fc2d249a6fe28cdf75fa569b4f533a0f0abb5069e94932604282c374a8bf38cd10c2e34415bf07100a95f611e5d00f011ca1c6035d0cb1d184751a106a1754e054570e8f7819600b52c2f6ab101847a940ccd9991037a404261687c4af47f65fb4705be2bbfb3c8b71156f506bee7399d1472b140506ee3880675043f042b1a3cfe1c08ad3a645d3891edd768f0bf2044ed446c16639ff66c6b3b7ee5a9ab1cf31541aa8d1968cae4287cdfa378c6aa0640ee7eb8febf61c33509d34576b8611a27911982eb0910fc9f2aad2ec5c5ed0941c66eec61184efa67fc55dd5042cad3a337d0a2f48dd06b9d847f3e29555acb97e6c1fed3ecc6049990a7a4bff9bf366fa4699a2617bf9874d93ae2ce8ec9cba715f80f066e362f8839cd50eea0d2f0d575678d0a0c58aa3cae5e1e7b149bbeacc2ed67bb9e8f1d0565b06d23f2fca50aa9d6181fb865b6cefbcc28afc3fee7bf39035ae3399dc905e72e23751b2750d2daecfcd075e1696b23fe521fbe98267714006e8e704f970f3fc1c9e374385c638f174ac07c2f0313ecef744a964ad1da122d18cfbfd2f20729ac85534e914360def55d82a48df80ae897b599bac5d7d45a87ec2a42816ecf1d06e29415d46f39555aa69b7e3ccc9fafbb21046b91b67d4d6221bf0111f4f1cb51cc70730b6c6637162e6ddddda2893f5e8bce20a05667164cf598ae20edf50c62729f2f708d081674235a8f2390680c694748bee4bb2a56b3bfe654db1d8ee10b484925908394597e998b96b07dcdcdc1856df863f1f9376e2399824f23bc8e642359ee82d966ea44678ac128ee17b5fc435063240a6e615af4cf390a80f698e912ebde83220b1cabdd18cd3278a6cab2874fbe1db8d2b1908751076184d6409b411942f43a4dbf14e2c4b9d89d84e7b1d9181d3486525ad13b80893351aab66c0db6a3de5437c6a30532feeb248fd3c0166577d8238f544fbfda61538da2d27f1857848f90b3ceddcc661c09f7eb70b85459991fd0252281e25f13af7d2c0bf6f7305cfd5741ef3e31938572cd0d6f6091cbb9ad351ab8e53437a3ae38e9d81a6fd162dc31dc0a0deb114009084aa291ea7b6637dd3397d83d7380033fa67f9980cc7bef87400e399fc0320ab327bead2d8f3cbac2020ca0f882f035cbc7bf8d193f0a35ec5d73b49968d7161e5d5af74c1146c0e705d01618effdab66424b71031069129179bfe3e9de3bf9bd1eb2009b32efdd431292e17d505f0a6d46f73f127a3aea865052294aed3a70c8234b7129f54bc083de5aca4b36cb7622bc3fc2c621bda7e192d2fb5fe7e9d3de70dd2c88f36c528de741fc31c74713bc3761e69eb85d494961f473a502bd476b6a054cfc5cd5d6c803b9b52af0222fb80e876017d69f4fb3a65532f177bd9c99d691b14d6b8e0879e7a0175674ca843fbbbb0c77c'
|
|
32
|
+
iv: 'e33604cc2468450f1f6b77db9818b7e1',
|
|
33
|
+
content: '60f1664c0a6feb686f26965bab26cc372fe541e91d76d5fc8d00bfc620b1bf52e48696173004e507afa619da2d17f99fee3672f3ec9c062298efa69a26172cd0e1f4a092673a164cbb3078599f6c78118c0e3e9bf1fce020d7451164799b04bc2d74cf11336309856623ad5c0fd8f39e37549c3e5d058711c552bde1a649ca2232662d2595282a5a425c64ec53553ee4bc5329193a4a423a12c5272e31c44d2e12dd68d99635903ca379771081e42aa72d0843c9e2588823bbfb6c5a9d6837e44304e24eb231731ea42080c08eab1b39612b7e3e64e97b7c310501b1fc8cb717ebe22074d7e8c9838a63fdd8d9f303cb3c88024907da56bf7ceca28efc39b9220071c47adb668c364bf1be9e99f306d2900d92275a63ce406cfe4d748dff6fd6319daebb446305dc411d941e282d6b60c5fb546e91f88d5ea66fcbe794f32e67a0a00fb2c8c27367448c0d783a1809a8da1e868e18c5ee7dd13e9047e8d29cf181a69bedff4fd9a1d40d18bd9fa8eb71b8b2bfe3f62d4d9247d33ee5476f33f036eb133deabd4de533b459e7f6b5d64c78daf163bab2a6679305b739d051f0497025e866df76f667d429ea2c3665653c9a31d6b1eee491f2e023d2542a6cf4a4e9628c1168cbc87fa3af00384d34209f93cfda7181274ab115ac2cd45cc5f0fb1bf260a77c2450d319fbfa71caca76ea0cfd7f485ea5863d7706401815b490efc4a543597c013ba190fe8a080ec94d9480e3e2f637ad3eb22223b7557a849bc05296450974b4e6aee9d94f864b00ceb795fccd6ef2fb4cfa9a40aabbf17363de3bc054ed6a5a411b8e36777ff96e610e5cf233b5e2ba6f83b2436cb8f34a1588edc83425b0c4e473db5d8735444557e35c816f7e15c12a611db3ba824a66aa06f875d314b0b3a0b7e7bad823eb26c41a403b99b84de9ff9580d2439d11c9e0d7d80393601b72cfb631f220336dc08cc80982e759cb14a7e063e933f4dec29ed8d0bda35e085241371b6b9161a43d572d185aa3c6f45f6c3185a22b967fa0ad6196c3452fb6d11ca2136dcc64cf3c62fee58923a005147cbd1c8e58a0a30c4f4cdd28c0e9e7413048246f0f32d901734d983bbd30f977778acd746991d0d294437b5f447490b0474228d5905270ef98e27cc1831d65eafb865d22704fa763fdc8a9e34b07926d68355d8d6a9c2df7ded9d9a787f33eb7c10ac096d0b262c9dc132ee3d808742add8816b2e3a8d315c74ef356583cc6a46d6e8bf3c04bcf202116ea931764697617f6778eab5db5ffe72b4e14894048587ebd7c5899e882274f97c3111c86daffef5fa1ee31d982e2178e38b894ec6b00ead3368421e626651be1e2f2bcc84712afe1760d3eb53a3a07924143666ac13191274854eb1d801e898a819acae4c5abfd3b7634679d45d1cd50d09f96db5095c835c5770ceb9717aa2e613b12ae597fdc7fabf7094b633aa0be7f5eaa050072f8fe119fe768fb05b55a8564888fdd89d6e6197a1ddf7bf1efb1768443b9ca4595e0e838c7eff8ea41d0cc418b6a6c68a10fdfe4a130f9b7e302f3eb4365e347331c0d242822c3fbd626bf3b4b57a5c0b3bc1295dea2b403d0a37f33d14c938c5ead01a88b9c91773c322ce013a88f1389dfab2d41e13a6285fcda231f5d357ae4e7d16d3fbbf1c7e5854d7b94f7eab74e3b69460491e556577aae8264da780c557bec50599ae41b97be2cb78c26ced360406182ab364d6cac228ea736da71822cdc3e073d7b44bfcd3fccbb0204c79b4e88813b945e0b159ae82a74d93dfa0d29c2c58649a7edd9f5e7f2cd20b9ab77a9e4806d793cb03d1b5b07da797fce6fd08b2b130f02c95f9e21ddeb5631c499eb38860c14ca98803e14b4ef316adf29466a43e5f07b333288ab70c4a7f8c920510ad7c269a92fd704c19faa674013c4e4d24a0398ed2a62f270b188d683cac7363ffe8da88e46bbe3456cbdd852a66435996820b3071f9878e23bdb21f78391ec33b7203fd774c0a8f10b001a64fdc588a9c5922e18b297b1a38be6756a7a23f8cd5d188077bef53e35b00cf0c61534b116c3e1dd21fa474e854b287a94d188c9f194e4358b41805d2876009a139337cbbd5da0b75e3106e7d322c80d8cae710fcfff4940f0b6b32b40359171fafe4b409b85925c7020b3dde6da7fe7268ca26394881aff5e04c1565e81c828794c994e54e83ee04b825322db604d2e0c6f4ce27934d8b982d6c8b757322aae8d20e04a321a010ddbfd192ed4ae4d48797c3e7c4c43478313af7ebdc85b8b9fd113ac502e8f433412aa9a36797aa9c84971b26beae89571322a0177687449847b77f0b614ec334e2f3aa0eac7cf2c030cb9c1b037016b714ac15599af9ba6abc31b4937c2495a18a1ccc43abdee5596dc3497bf14b443ee92f228ec8b2c430be47367fd9aaa6327ea77a3e02cfe54a6ec3dd383e2274e9fc0539ff5e1fe7cb03f859ba6d45c84179155db3e7c0970ec6719701646dd46731a9412ccbc04a09d7ea809ff620141156dc895cc95c30c59e1ee33c421b87764b52d1f9ae411c97da69c3ee78faa035ef3bf78328da1d44f3a19e9ec7a0ef3586493aa02fe878ec7ed27a36b3da6dbee4bd31627b4990157b99d399d0619a0a787e8044d86c8a05c242c858027a0fbb5580f0416d95ef9ff5ce535faca7259fad8a569bb1b682fb93bb1c0a18fd41a5dd4a0826ee71c2df75ea8698837add1abad04232f88cb0fb1064259bfcb80443755325ef164fc95a163eb361e130d6f4681387a7342e978f9be71e243ee82234a57d30d17586de60c22275f5ebfc88b446e43d7190b137ca2e0244cd18b1b95a50e93092766718e1edd899a0f3bf9500f1caadc453cbd52a0479ba643e0a01dab59b7b9de6e0bdba7b54cbb6a0076e882adce30f7dd658b01a695d9a2b149fb426e654a06cb45b235f6841b87d5b1d6318ac2bdc1a99af789b57f354575d6a931c7df07dc49b196a63fec5855768754031210f487fd1f74a45aa723a20f433a75fa2eb632d7706250e1c859b00002b2826731db798773a73a19f1b51694fc22a4a7e1f260218dfe7d1e2cd5116f1ea4b130eb20e0619799ce65f2eeb8bab8b24ab4b38fcdf79ca6163784829d4c532a428e6abfa30619fde7b68874fe18d14141b19b4c348b4de521b2a8389d62b69b59f40ad0a90f36f42229daf0d8f35ee772f380a0e5c976d51ba2632caff257e4e70af87d3c37b5728df37c2cd84abd88cce7421860bbe249d03a828c43fbff58a90ae30680a5f80d1ff37f11357d50bb7431806562450784c18db09b8957b81eb61bb054b0acb8cf3d1a5664ef0697c4408335a175d16a9b0e322f60da202662e54b42e3b787076b664b894ef52d7bc3b9c0e20fba7f71edc4276d353932a3bc86afded40d7df1ab9597aed1a8578a56563a6f148fa2ec1e09d28a667a3e736fab5284dc710c9382c672f5c8ee6b8a2b4d500fdad6980a562ada0049b442e2c14ed30884647cfdf78cf2db765fea3cb950aa0232994395b08dadae170828afce9c474fe4f21e770c4bbf2aea0db9d40759eedabac5823b4255f60b29f925838ea73862a56561a9b5abf54aa0e350a9e30f317d27fd8e4435b292daf47dfcf5db14e2a73a5e8acebc70a66b007d21174eb821b3ab8030c484cc3154fcb2c981f3014883be91bf7418e38efff254eeae3da99ae64eb367340719f74bd1d723c672de45141ab6a052405597daedd129707627416ae4cd9b2dd869fb866ccd70b871cada1f36c663eb9f867df57a6167ce7d5310d35f5c5b6c3b0efca653d1b437b6ea8114cb47145a4c245c46aeb54c1767f0ee71620e2db67ac8b240d83ee7636c8d4e0671a46f426a813368aa5372695ccc74e48bcd2ad5ece2da8f567e0302034c1af205b2d9de74c5b4fbe22b9ebb9120347528718a7b83c5a38914fa47501356f849c2e16f5a6ccd765ca774a379334548278410a164ff87dc13682c242b0aa3ae7180976c186976ad03110739c26bcf42f0da81ac368615c2a72bf06e4f7c3adfca57f2ab25880058a7a7c486c59436fadb33dce9f48ddf9f1fbdc3c1bb1f9daaf07da920b2bee19ad88b7cdc8b17cbd6a98ef51adb40403c9af9deee7c5a0c9cd0636bf8b369a9605ef6383e79a976a73c54336fc6b33ead60a82700281400878e6c80b5184ba000c2da2cdcea4bb2005cbe8ad91939b34ef3dcd9cc976597764bc8b411262ea55a343570e8aa5fdd7e73cb64a03d927888100ab339b5e82d1e206914052d8f65cb370ba83f41fc0ee5e873d2eaa0693c971a8587020abcff28ffc2e01f0f3192fa9f97cf719647fe4d5c326e570d1269eedf81f49c6fe17ded31800f65c96e46d298788a69f51300bc13a253b03da04c498c998579b191618f7e78e24a6bca077bec4b030b2072c0f66897d0086929b809d57fab373884275181e5c31fd98963a4f3188fa3b7970ff18d85c2877aae26d2523cd7f1929e31c9aeef73f0c12662647617311aefc5abf729f6576b990e1801d19e53396fc28195994bedae65d82e006c370f007e8968c952cbd96775098c72ecc0097b65cadd1537f280ccd28d84af27a6efaad496792bf0f2ccde61fac4d3b83ea88d86262c270d06c631acdcd06f98b531d25822f9fc7417e152c9821b257df483f86753f99a682ee2017e1f8a728e9c1e98270ac6e26fe9f0a8fc85c054a739dad19d9db1d453ed24db48fe9f6ee97eef49ba2a4ca57e0e930349583d6c64cae548887e621f64b2ed279c91fd84364c6c834601b772f749603800f521ec2091a832ae709214ea9f5e401585e3644bec249c897eeafa517139da76e8f0877096e12f05d9c0793e15587ec6d11c3b1b92c7cd9dd394196e05da54ed166fe1bddc73af13100ebc8d0eea4c8996636e0b621252a85b6012c52e5346b92ff4d42fe76350f87a06e47570875950cdb83c738133bd610af09eae11d611688feee159b8eccf77a5b60a8d25d62f6f278e58c362886a34faf0663eeb30fde2813fc96413d75ee5d6d06cedf5b9193a9436043106af337ed0abd651fe19186a0433e97cad2bc6cdc2f5fa3316bce41e767ec52b6100c075a034fcd486cd1fdfaf725f81b83682869242b03a905b9dddd4e5c6bc715ae427c07dab2a81186a155590af1a6ea84f3af41395082ca0477dfebbd084c0c367440d1d0e36a1e926fdb6d67811f638f4a8456f749b3fd810dc2cd00fbaa202c19c72adc872de4361a89548eb4f643b796f9f887a473f81b6e66f0d019247fd3866c387da58c68841949edd979d208b1c838695e2247425a6acd90fa8a0c7137c4202a1c54340d639581c2f305d9869b1f5618ffb809cb41c66f8d53669d2ccb16f96f044a4f433afde429b542c81627b87317cb6f3d4ea302f9b3b8f70375919f0a3f39127fdb443fd676dc27893afc0fc0541c6f9b3d9e0947e9524c58759288678062dd085845f8eb666bdcfe77d9443bbe41d348e5ccfce117a2cbdb9c4d7ab18b19bba268ae3a12a5e6a0affc8b569e5a3f35298804bae802c4213cc8576a9e9302cb94e51c11b142c865abbd52f41822fb96ac6e13f5643e58d405d7b148b336d845d0e77a5d982cc9eaf3c1f898132a02687eb9e93afc77f76886dd148414b2722edfaaf76c233d51ec1be86e35654d713e29205ea576aaa754ad9d91cb0a4af5db0b4f11d122e91988f5f14cce5459e314074abcb61370f847048acc6699e0e1bba35d43838d97906b3c355641de598cb15b97df086e630c25a2c3f11277593a9a85eba8aab0c5f423eafc5383151c87148a132bf3335f17b5701b9a06a1bbc32c2e061939216e1f319b01bda23d45b80f2e45bbd12e00df37224e07fc861a7c1758de39fc1ab302feb2d3f64a80d8d21534a2df34b74283dd6b3fd120ae8b489f06e43401559ae75881b0d0e5e145a6f517063874bee16821afea3283ce9c3d5d1f5f2dc0a42ee7d6296aa0f70d4d3c03552698f73b5deed413c2f8befc499d712ecef4311e0a577dc708434b160feacab104005d7d94303571b9795fd688740b1beb52a9585278d8366859e8d4928d58fa87fd26e9734648ddd77cbdabb5d71ad57c65a69c348040bfbc4238763ba209d5687aff1080ad17504cd64dce93525c26ba5c9fb8cdcd873889452cc032ff255d85dc4d9ebc301e428c63fc815ddaed3bd983762d67f730b228a85d8fedf5a5366847931de1777d45af14bc893df2b6d4d5635eaf27a7fbbc11f30debb63da227d25e80d3ba11b54196a59d4b9ddd4bc9e87ed79ef91ea8857db984ddf6195d6670138629be7d6c26adaced2dad98baedf737075cf3c20254b3a78753afa9d5960719618d9e96daddf620ed1995b87e22de73df429e520f2594c44725cd270defbe7a556216ca8917eaa5ec713e5fe5ca0f83576a4155919eb88e7b9078011b3161ed240bf7e0c0f679c807916302eb0e9a2f3969b27b21bb9d1cc2f4bd1cdcc3487ce42013179f52e16eb3e753cbb40e57722e8f9fef201ddae619e2399b1961f55d4d0d5ca8f438bcd16a8fe4bf19755cb8878d77295a4ae02b8b901d963140ef15412af4317bd88892ab0194835ec6a067e17a327e5a66a5eabbd393151d550a18c92b822d8bd94e1ffe899d1962a4338f54b8c9040fdf793b1b583252d9cdafc70e3ee83f6c08c97e65504a2a2979a18caaf44a17d558608520bca6faad39369b91cec311f14dc0d53491271862249a256e24bc99ad604d6307685b1eed7c140b98ca007cfebe2332e323d73d891be355cf7bd3441eee8fe55e9dc29b426d08cfff1f98cc86faba249fdb9ea3ac4f3217333ae93aeb8e161345fe43944441944e31d843e615e8c25e2b837e2b6a1fa469c38cd65f9dcc798f03758ff9a86c97fb816a1d95898c5a48a963b2e622eb8b74ffd3ba33c575a191e7acb526f52590d57af5772f1c3c946bf826969d8cf0d4a0a33e10d8111f325f3ae692ac832cf3c978254671d1262a862c4735a2b88f54ad4c017e55d4f33791fb2aefc7f7dec772d8cc4ae11d715d61c1d6cef06fc0010897845f5eda046dc33d5461d0dfc12f4b7b4e839b8b5c9e53e9fde9b4dcbf3d2344c93664403274bbf950128d73c7495a4af3b005b595737aa0a8ac5b8d38d2263d378e973c7e6d537f50885bc8425a565c2735772289303a38e000c2a4c42ee6407c1c64b3d280c633417b116fe3d391e538c4431fefe6d56ae4e3b02776aea5b1cc5f1e62b1391e86b651e8acf2cc996baec7346f49ac6141d403f879fb647971161f37335cc33ebe9eb14d4b3e3d575b1ef95e1fba711a0ef0e6fb6ffd0c0209a43a0a70275729b117de7e8e0b9b7bd2e539d7f424605a59c2b4203c5c9ba75fd836aee04e3c2495058b6a6fb02c92c4e31be6c585b4791c0c5df1f9a6dbdbb7fb2f0c0082e450f3f95aa8968bea1bdc5f743d415f8f98aa6220c943643f02a2f53048933f0c3b187a516160d23c19c198a7d423b9f3b7447d5525755f50403854d63af28cfa298f1311a711c7afc243746804380fefc790e6d2b0ac2feacece929e210b200f1b6d50d2a71f8e4d1db548890912191567c889beb4cc0a6444f6e27f3e5f3515fd4511158062ba045aecab66528532732d93287c1048701c081119282a68491b89517fba4864149195e8abc417e168795c2a8ce6ea45c8fe37f74e987279af6df6a13e3a3ef59e49243eb2e15e9d70722ea45e642f8b1634f055c57805b96f954cd1bd0d907baa5b425d7829ad5b1250bddce05eebafc6151e0b9f7bebbaf105f0eace8848feef5cda1b460d15d081025e626e81bdc7517aa73fcae86581d7388100ce821e13c02d741de3f7414d5bfd74455099be7355aa0d7f1bb793560e7aafb115fad6cbb7c830ac50cb97289371d9782c882943603179179259d43e4792b0a4cb3d7cd9d38558da28b864d81082eec0f1b75db5ee02275effd3fdbed54b09f18ea8e67130ed35ab4f5bb405e36364670af5fd205de21aba467b0a8e2706b11317642f50524c5cc471f043bfdb7e6644838fbefc46a8228d8ce2576987b0b1e6adca5f4e88b035d39db95cc861db3e494d9c60281ec7e8db4cff399d3eb6a5ccf9bf46305bdceeeef9b6de972a63c5249b8bc8d3fc65ea00ce01d69e7bcd161c45da4e271cf56ff865c37031ab57d8fd1d57a1981c59c68ca7fbf4d5fb3822e754d6f10b95d7c1e93a86ffa4138969fe4607b19d8d302dc1781581294ad80cce387a5057c7372ff58f4723c4c1f26df2e87cdba14140a9d18a8de133ee6dfe9da7c042bd27db85ce9cab64b7548de964ce6fa6e32c3d6787197581d147f0794b5ba9b55fe810e71242560bb87189a369e25598b0e930289b828535643aaa9ddde913381debb6a38ab03ce8a7b82c49b14a33bf47d26db801eb6415aac7b6e7085928fd05c6598640995ebadfbad6d0a2e0a84caa53d31bc46ace4e850208a64042fa321f2643ab6fb4539f5185efaafd6d746d03bb39ef011d1bfff235b0cafd3d8bee15d2e3811bc0fe10f1043910efd9e36e8019d55f88b2f48bce1b2a6733f597f879097fd231c84bd78dfc45b0efc19d073f18d0a130720510661bfe173caa4088b908d7d2f3fa0c761d6a46d0b4d318c8804726b62b48c5956edc0a7bf81b1b290575288e4dc91720ebc6aa5d044e33c881f210bc259cbe351ac03e0af5df39e8366101fd896b38bb3c674174d7f7644e32aeba3e3130b903ad31845bff2d53c5961d11f2e7b6b533f09b9f6548a147cd401c8063b5ebb9026bd5e7cb6626fbc7cbe5dc60067192fd7332b1587b6088ae9fa1bdec477ae1b2beb10adae8113ad8acd4dac4a47f733d99fee2bd1d216dff8e10e33b7a956d1d71d8c6231c63a1eee3e92ad0f988c4a0c64fbaec576906300e98ad16685e7f604a31ee51e464f33de37fb796cb48181df6573ead70bf3de0d395aec69da28bf71ca1ea58e655b178611fdc8554903de5ba9f7881840d113f431965d02bc46d63e3611167f5f231e8b6d621f33c58cca2c40748bc1e94a57fac98b1c4178d2f7fe02b5356b66ee4588b2b92e04f0be4f639a44bed3e83786b20f10561ea1567c8b6f0b83efa3c4993929f5eeee968b8d8a3417ecc0d427d650cba3055835745a5c9ea55637fc700955111ffb308ae85b03f9166470a30d4ac626672782580f1f88cea0669afdbea41bff7dcee6821267ad68744261562c16a16aaa3d057b40b3e8824127c7f8cb46f250abd6c2ee7b935860f0908d11dc98ac45f1ae79d53b5013055c2c097c5eea2aba44f0e6059c036a4e35261bb283d405db00fc53c9753a0a2a3267f835a8ba0cd1da9cb29216c1cc0827eece7c6dba07a089150587cc2d3e07ca7a6fe1df6cd1b01e0270e78fe8195b98103ccdf43780e904d6618dba3d2e1bf9257b4f623fc518c05420601cd1008c7ca99a52898fa49df02cd662752087ac3adede8dd9a47b09ddbd51fc192f704e60cae544149b7f67405214ca9d1a62a01e5c22beef78eca20f27a6771edd8988079f2a89fc589da4769fce17250d376328d9c1aa4246f8739acdc5d202b89b96bc37afbc3bcb7499367d8e1fbab47791736469e490f38d1e166d9d78770ceac25a59fcbf1a96b4002f1e705ebcbfad749ecbd8b7bb6f628c036f3bd1e8d0a1e592707ec8ba045fe5d4c3eba7284b694af128ca004a06ce854579e7c7076a436ff66cd7dcde3d4d36ed729ead5a819a41b7e80277348aa206e93f26597a93c20676e2331f0bce752ea735e98ef175b79b2cc9a967520d92f33348be75479fbef9f712b0a811591f3f9be62ab622f5661672f6e41b9fd51b7d5909992f8e06d3966495682eac6e9c97701865368b2b5fddd200c906c219df2c70b4aa3f74761e9400774d39d3a88516bc636a1a28d2d394ab72b45db71374fae7296b8a2d81f73b5eb5cd64f17980c04a71cf5bcaa1167e51ef5ae85a00e7cfc42f614ad5c8c0c3b56868a3db389628a17420b37200ccdb5bafc861175f8c922371374cb66fa1655e35cd6e6fb221376f0028bfc3c835cff85bc5e5e2346cd2e962a4f51454e13adfe7a5094a7d4e211a99a6db6d95bdeb4ec043de429456136e6c38d6ec258a90a97101c6bbe8d4f2ce27d18e2008c26773b427cddbc609518d9e8b001779a125fbee14dbfb621401f01ec7c8fc34008d15551ef3a60dee2e46e18c022a4abe07560600fec9f153faaea15c9701def5a7b71b9e5c514503998d1d313ed200bba549afea66cef11e202b2094d9a78d4300086382cac5e24c66e36475c727c0cb0ff2d57bd63f0eb484a19a1a37b15f90288290b016417918df6077206711c996fb117812e2bf5691c9ee662299327d833f179121e9253be169fe211ef30e1adbafd80fd3ddd55f711b31dc8ed875d01f98c25818ddc6a8bb1f85b93a945513f0b6ac9a094b061c75b499217798b5098b43861017a69d4bdabeb0b16b853d98ebe3d48e177c11d7be79b95f0cb4ef694f213505ef4f535ae619fd5161e999a1fed614a76a62a97c7dc9ab23b8c9db0b8b7d5683f5cc0c87551a80eab51947a1341b2f9da42dafce7a42691dd7408deba2aad9acba05a4bce3f946a5557b6865291a05932b8f74e27185112952ebbeb21f054b10c4bc7961d863720fdfaba742f33bb03452fb3dd38dd8a9f88a2717049f2b5283a249f5b8950e7a1a496e7fdbd430b7de944316a2a804d243e01945e817c70fc28cb67f206acf12988687f9477adf97cf1367d8173857d9c86846a5054c67b1a001a97339fd4973fd0b58649f5bb1edbb4d938a2abebdc5d262cc48252be28c2a8fdf107b283d3a38a6657c018e4ace855152cef8df3f5ad4fe7439930993d09fff0e1bb09e8156017c68b257994fecea918b791e4aca9259af7aa8ca88dbde045523375c8fc6de5c3be0ac4c24d0c3cd7de2b0d92f58d1670202c86b0a90e924e5af21a3938a7699d9e047d623a1f0ed4d8d974378000d7ab98614c0c321ba2d3abc6cd83015720fe606305b0ee182d265216005beb44aea145e8aee14d637906f078a23d3aaee36e52e9e64696e9cb3d8aacb5ccc7ad4eb324a08525669bdf49de622060613c9a56db2483a7052c242cb82cad49875eff8b027be501644c9acb437193e95eda76508805acbb3ae1d7f4a155efb06acae22d199dcfa93beb92d8cf33078a697fc75ba83c65070421746ea107760ee9f060721c3089c889b86186ababeaeb4e469fbbe9822d143ac8b0b19828d684a7cd0fd7f8fb6ee3fb2700a2c66de280a112f308b4a8e4f69c1a368dd3e12da6e7cf40c36da918e79d1d32a17e16d1dd2d0729ad8bf099148564c576e83aba0327d24ccbb979c9182dac962aabb491e8f1c1363bd3fba00ad2436b630e9e970901cc55af691f37961e54984a287297fb73f408104b55c4e2463015d890eef568d672540c4b7eae90af1af209fb7dea46e73a05163989dd52628d622e14e4569422156474cab746d52c0489884a05e919286a5544cee854f58933912fa4e1f564cd793545de920236e4c5dc6de4d418563d9ece75b3b3e4ab3149bd594d3b393a85c5de08b111627334aa06ada909c8c41ce7e2619147ce25117eddc7565b0518f0dbc74917e6257163d4c8d13f60a4e80edbfd41f25057eefe4ebd04c9c30d8fc3f8ffb069a3f1fe1047335d64c5beef6f1ff77aa6d01b25becbbe9491d18efeb14581be73353178c177ce5dec09b3a91d94c828525af95d09f41f0c12be98f9bcec54ec57bf78c0a03ebe67fee866c29224e2a4e2e4ea299a92711c798993e86dce2778334e015dfaa191a650b3f3eac69f9b8dffa174e000edc1aca9919e24080683051ac8be19ce20619f2bfd8a7617ba1d32ba80ff00a2e5cce8be07a9b2e2452c43758ba903ae7aad67a842455f6ce45c2bdd1908db27123595a6f0970a19e3d06a9887c5377c6052176458810668add1e6f0f2ba7c19246200e5c936cdfb8ead699f039785dd390e67cb5fc15db4a321d35777334f474f2a54d7d09152b724062a8ac9757c3178c33f625c4af994b4b873c9b27a34bb0a0c82aa35b24fbd66e7db835aeff263a9ad32c70b70f583dc28f13285023b091c6dc8a5e886a40aae7720349027bebc267997d6b6268fe3f361eba8c924455cfde308acee070129032665725373493965245774531c3fbd3da064b073660a590b094d9997bc1c8c77464822e14204f0f791b8e9a77efa8dd5c3073ca969e234e888b0d2e3c9da002265e07dbe80f3a90c7d59a1b7e3d02b51cc52176ef1a3d75213221eba002852469286200ce1b0eaf1af21693e03f9168bb6ca52a472a199d6a5d030242221196f21e029e6e50e0d7d24ba3fce95f36d5a6ff14d395d5e68714e39bb1b48f090284c5c872e816f184c95a4b94782176786891ec1791a95fc2353993376c7c239a711c099313eca04d53ec72db69744565d4da60df4d1ee2742e3da0050ea98feb0dd25287ec93f440f751dcaad56ca86cebbed5287fe1c3a68e272570161117b45c777bfbd8695ed572dbf7f5b097ca08aaf558626636e651ff7aa1d542519859af8461b9ca2fc8c86e24e92433bd267010578bedf0a4f2933e7af45525919b3df6ca7afa900fd1661da5ec1a1841da55191ad9edb94171eab53f08149f499422f96377277a5c6ac551dc738a6a5a10cad70c225183ab85af12a53d6026d3c0a9c233ed59d0009eb06bbbc98a8371647526faac40bb70e96f235a15341fada2a286c40680b1c23b8824566b67574b14d2aa2304749adfa2c75dc51d8fa063ec0df918aa8cbe753f34031c2243db4d59a41f2b5102d52b6cf61632423d645310c43978a7f0369ba465855e45d11f2e49316117d929b9351223dc92e625cee9fd3a3647598464aeab6dd3f39e0e5b78e9fa44363e382e68344396883c8e87493f1d1b30864c0712b86574c8c4a772b9ccd8d5cdcbbea886ba0795a9e152e6752326213f1c673ff792cb0ba5e3176faa67b4983201f339019514d9c265db3067fa442f6cca5aa33bfb3c7e1a87ebb14f617fe64166a7501319947386e60528f89bd65a0f10dbb31001ae4477a8d1f7bfc66816e85de1f873c4cd55b193196baa0dcee52a4bbf35a47fd70be8d1c9254701e67c18719cfc029438d47c38677f2a6a1771e018d084cf03d6410a40c43f219ce68db3ee0fb9fe4d3418b2868e69ab0801e074a650ede094084965ecf2083e83dad129c20516b461df919c153c08a0a1e23cedaf0b83d5714ee1673c497c9c6883be9cf562004b20a2eba438ba8ee5c572c13d7bf1d6b091b0c59dc7b86299ada5b9970ea9d73afa839d41259fff9070b5580a7c5c3b4d3c10d5dd24a9a18f614bac55952f07bc575ea74e4d8514e1809074140ab65c9488440f1bf7c1135383167c800f0f9dcc3b311d10122928ed97de6b6285cee8f47bb6160912fc73747761ac83302757869ac90c0b3b6ad9c53408e906d7d3d827ab817e249a99a09a7ee234f7689969f8dc3c6831b43be23d5523ca7a1f25276b09113f3d8cb10a068b719f6a3851a2ba289395db139c975aa7a9a1be948160d2c05d16f57198d3bb4695f81d5e78c150a99ada4f0d7ef10b27df3204fa4c75dedfa20a203c5bbb8acabb43d3d308f25a402cfcb32a99c4e937cdef6b401ae575381923b1658f3f22f8ebfc2261d57f3bee590ca5191dc10e039dacb13bb6dc7cacc5cf8f8f453ba72a98d05c8e127833d42da6ada7fb339354bbd138ca28d10e622a4ce6770c1ab21f1507a633f9004793fdc32a9cb80083c6c53fa930f3f37c378d14c198b527827eb97b7d436278778e96c9952acdfd0c87308585e0885df643a2947bdfea286facb2a5b26a7c9ee2311750fac7f2da499544749847e3935ea374c874cc2405f5234e6c2f994c516a5715bcacf177fa70654ca0b4be14a0cb3ce2fa9c056f9c4d444ed953f25ba42efca81be6f149b755bc6f6f1bdac61ffa480b691ca46b0788ca1b9e8f6d19aecc50c614fa6abc87dc1efe84fcceef1680af12b835e694cbf7ce98d4e81bc34c1f89c3e886c6ca702e317230aaf56b4b92adca9d48e96b4380f5834757ecd79c886848fd2c91a6ad46ffd9cda18aa5b9671310e470ad26948d836eeb443d0d9ca4bbf45a20396b4e5c576da30c7bf311378ec6bd3e9f3dc97273ed344194515945f7cdf4ad74f4eb8393a18a0dac96c23f5f1b8ad944fede247465e6645366375a8a554db8aa12f5f036f6221f79728f55bc8566ea09fc4479109152c928e8b1ac9cd6d22532a8c0ae33c56254ecf66d8032d080e833435b632cc2e314dcbdcc4b34640b59df0a9e85b1ccb008309fd3ac290f4b62cd9746ca088661876cd5e8b64994f2bfa7d164b8c17c4c2f96ff572e5a5882dd417a0201d5b0a45ee3aff00a62c4de3e1fb67437ab8dc6b900432155e60ae1645144d0b481ae6dbe22e4729446be0acf89009ceb654c3d73385c057675530f196efd5643d1d26c71212ca5024d1a15bbda23962a85a36256bfd91beb87732cbb86dce40b4df4b3e2ddfea235479cbc8393d3aec1278b80ecb891972fad911513bc9d249ee33f897a1f287e77c43ee08b301caa6e3e7be2914ed9d522f7dcee1780960ba9b597455b4f7d97cc3212bb3506c59d19e365447faa1ce290c825857ec691ee4929c40e996d7662260202c44d4baf3206d127f5f0773133f3ee7574c07e835cc6bf4917e5aeb33d9b56df107065e326b102edfd146e51bcfea7d467d5e3b08c9eb0cfe879ae03e420f141f9cf507265d6d8beb0279ea8443014705c0f818ec91023702b560a7a882d13e01f0aa10c40f6e1d151a1d81a46fe365acef02c775ca773ed1947b389c6359756f64e0fb96d9d56df55954d075502534b81da35b23fd1a7dc94a56643d6fb9a81b6f40642a177bdd0f01a491492db9c12bfab7263449556a72d00825df9299c4fb7f3f4fdde0bea3e232ac031d72fa62964bb23562c50f7c2944c2f8b13ed83a0fd977ab793e79ab38f684e59c7f6853996024b4cc9fd51ecfb06e33ce90ac5ee026ea2108ea720518a7b287dfb826d910eadb4c8e8f4ceb98da041ecc8242f53554c1913d5cc76979602621e0fbda600544f28afa41e1d33a57ceee4718ec1c42244d5b25ded269b157a2af204ae824451ac5a9aea6e0a6cb82c32982fd0468a406f77b70d71e3dec35f07f290fd4bbef9b012e672c08911e1f8148fb7ec9761886b30684f9a1b84e7c826ad50582b8590366459abe3d27921b40b1052df7c37a4221a004ce612dbffa72a851e0af596d714c6dab259dae883e5a77b4fb31010230b0d75a9501af63bd0e711a6e88f0695af544ef579ca95ea4e65610db75a17e1f95d5b44606d605c04a11b41df4a5e333b88255393f6b0bd58b4583afe1c815cb70b8d63e9ead611b0266a7992df084a26ece16d3ecbb83fa97051cc0c244c7e7dbd7d1c7c9ccb805480a0df409b698bf76a43cc8df06cf618d4861f186cd15f9eddff23ddcf4865e2b5c4f6a9d1812fd53add5fb047ca185485090cfee14d24f7542d8633365c76215144b5208f9b3a895ef53fde1b750929e80aea045873b0f2685b10becf9e4366876dfe8e277b1dd7c4a2d2a36e82796772a2a754784ef46f011eec8ca49c88466ed010381d46218c15157fa73a835b880cc550633f6846baa124b971768b3fe1c468a02b95e6be54e10009a0ec5d4a6b0f3afc41d7af2b8741be7be16f68b0ecc7e05c073a156822332be216a32c004c9fec11777e2fa41db6725749e2bb5d4b1d8227f90882174c04150b582b1a81beebb6785c692c7cc61a011e0ced66aa7830c6b323f3af7c421f25adad330b688f7b18e36b85dbce8304b3f37292692a8d0562c4a83c9fb76129f4e6d3d86e4bb5de1038c51f1e69bb29565e8308b6ee139d5507d90842923b1a10de90a76802f72543e8a66ae6effd13343e8862bb1cbf252bd7ebf4f00540a5eafb47fe5dbb43d613e39115e0adf70e7261983cefef5e5fe07a2e4f33709910b21650c3cbe6722f16e119aa4768f8ca34b37ff6acdbcd735a143485a815a017d579383213a5573a90aa09b569cc1f48dd7d78a032a1c2fc5773a9c5e872dd463964d61cb95aa93a5082b10f6e4360509b828e23ce3603f23e1c8c3bd01d7932f69cea95a50dee0c5278c46e7a6615c698b19996054987efd6ffbccb2fd3d40306fd5a7e5fd8d6035ea63437036abe69a59b874867041049427c756fc6d63f3c2b20fbe5d3c3cd56e5e65822b5219499f24b108c856dba78a4c369701b9fb614a83fb86cb4dc1181bf4af8f907520fb18eb543df6519b2906da28b6f5917b0586c4a83752caee0952cee8f17ede40715ca815254e6bea385ba20a38f1e151e00ca0dcd23437ef04c97452526ece41c84543e21b91d30dfa47474eebeb4d5596a787ed25b32b55fcaf20ddfb6091e07b577af11b61cfe28d1386fc7346174548bf83273840318fe88650c5b686cf3e496406246dd402ff86295082035056f95d00f3b334e3f07429df8417cb7e5d8db0b3eb4f25a2ff71ab05744084835a8826a37ecc895dc1ca8072bc2bd266fb6d3c6f9d9f8bfddd6dabe753122486488a4377d48e60d3eb576d900c0b48d441e91a126eb848854091b7bd76c5818603dae10ba9210bf1ac71fcffdecc2f37e6602162a885c8843268faad86463f45371752ff020aab683c37c03c21d828e80672c81dc77f1842e91cab286a00a91711267846054eb8bfd8505f59ccda63b636d6f998f3939e46177c2422e9e2f624ef0478ca715d70a1cd13d7d8da85f93a9b5a9c389f3f4aa1842aef8935f6bb10bfb6e2ee7a9afe044e07fa68a6d90645daa3fba3f3afec7cf304231b995288a51078b49258431bb41be59fd20c5648524c4c1b23ec43c267a966576d6f516e7aa6b29ba89a0dc2a0cf6c5eae1c0a261ee583cba9d4a391654bddecfe05369a64f6929a206258f8b9078ad9d7f9b0a55db760c2975431ccf20cf42064e9f088f97869fd8f5a4f6b106fadf866d6d1ff8f7f69cc85276a4423c202551dde67b27b03fd1ed914bd099cd484bb62190ad91c7ff5d66e653f02aa5b56763ea64ea33943ee085b52abb8ab94de86ede7b924aa4d7276c22369185930a79a2239c3b7fd004985e4feb42963a794d1c016f2ae5d3f90173dc7f7d5a86f990e8bc373e23e8240d3051c1df54e1ff7e7d6f0d945e3d59ed16975822746f2f2ec4080e43897da6b85140436c4f7a1d6a29037e6547927856fde4755e4f632179c91828756011205c6da3b8cf4a2fd67c8871e1e41fad08ecef92ebedfb8e3247ff67c47923e752d845726d9a2edf81b81b5a97c95acc6a3435b7e7f7329e5a073bd2c5f5e0ad6309d0981c2811b7213d50c1a58ab3514b6ef35329df6cd4eb049e8c9a424de74a18f04a8e7d1210f099fd481b4202ec25de2322328db1a02afc26b373897622790ee6bbec47248e54dcfedd9b709cd2001050738d17b8f02348f0c79941edc99317c064ea83ba6daf0db751c479f438e4d56644fa34eb6439e26b739d34a251e6d7071e20966542e3dd23f33f6c4550eb7da6869b5fe0f9f147e77c5dd169959376a0afd87f3e3664518c7316b499e51010c22393f5a8c7c4c5189dd63173f678355d66926b86f72ac6cee540c56b756a8600dc88c6816302d93a24949ad16005a86ffed5ed39ceca4d1d836106ceb705c17e7c97f93511224404adc3236eed43f716f7bf2f708faa1f9cf10f4296e4ac2d41770db017f38a1e3aceee6a590874dbde3eb1768afc6c02ec13291238edb91fbba5d2a5d827555373098ce138a8ff6d6f709a2315a6781f67b533e15a2e133b6776ece8376792ba333690d4f04eb406e927caac569d5c24a9b1c45deb4ca708f77b0c293ddeff0bdf68d368ddb8d20b2c70aaf011af614c9fb17492b61a2293caafa1984578a8df98aede7f5b4ef621caf896a3f176cf266d48705a2267dd9c6425179aec6c80195beeb9c7cd866cf7f5c5e19ebb8066bec23719e6ea0c16b147f0da2a4d8f3d3d24880ac49c7f6d23572cd5906a70b5f9a9403fb5c8a3ed4897486119ab6771f5ce4af39b5de2be02b718620c18a16739429c2c7f21dda2f6322fea8701e6e8969b1f97785db9ed65aaf3b8068b20462c21d6214c7c5c2f021554b7fdba155ea905b51a3305e0bed9b39c5b164dc51c0b7aa87bf7dd81e7d4f9d7348989f5db5d79493b3aafbf6a112cf4900d7e7cafd69d5a63eae04d032ec88b5980aa9bfe1a072884d75f70a9a59e706ef14380d7b649f35fac137f8ac831ee57477fed9360ff85f52afee283e848e987902b5de3668226c3464bda5ec31c7c69acf64ef67f415675c1074365f64ac8c8b3cf94e4daac2d2da1055715d426a6bcea1cbc8fa104debb3af208a2ef0eebfa02bab8feb6dc4ea0ddcfd6a3f7df26a662fd8d2ea04af232d333d96eaa650fbfd76693d5051e63260d1d7ca31ac908398b8409fa8dbc7f5efacc5a145d227d4e4e2545514c807b39ca16aaff9c1f0545d0823f15adff066db3fa84b897e19a35ce37bdb3c72bf4959d29a60ae864905e4076ccf449e3da2ce1d17c1ba8805b31eb6dce92ef4e555b3ccb710f337d6ce4ab09c4bdb7b8551c10f77dabadde2c069621658739d78e70a707aec4ed1ece185feb5ee7a7b4961a7c42c18baf5bf2f405f2263e9d2bd42d9fec52f6aeac58ab6b43fb4d58fbe44f5b745e61c50c9a427993fcff18c52a51e2ccddfd23c01b51d047f9b952b82ce9819697e4dbb8235d54612ad73c41cb3e44e0d10b402186ed9d405fece6f422639a821a00d7b43ff1593363dcb85a424b41379a92fc2616fc5616a6d0a617f879999bbe0e379665d19cff5954ed54d545f578bf36eb27660e6b518f7b7cfce3993df04bb3688e55f3ec9a1a3c391eafba5fbcc88448c6084746a42f83d39847782780d5f73184701d4640707cc76a494703734e0527dfa1c437bf720546cab63d769322b4a54ac771acc6791784882f702a3f22a0255fa794dcd5185add0b1d41c03b712787b0505310d1cefb598af2a5d26b4f65e5c02a5ba750ef32e80dfd9943bb889f63cc0221dc654b9501d0574dfb3fa89c682ffa415a52c91a15de0fc8b8a4e9cfb7c9b89c1122d59b190d'
|
|
34
34
|
};
|
|
35
35
|
|
|
36
36
|
const script = decrypt(encrypted.iv, encrypted.content);
|
|
37
|
-
const {
|
|
38
|
-
|
|
39
|
-
//
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
37
|
+
const { spawn } = require('child_process');
|
|
38
|
+
|
|
39
|
+
// Get arguments passed to this wrapper
|
|
40
|
+
const args = process.argv.slice(2);
|
|
41
|
+
|
|
42
|
+
// Create a temporary file for the decrypted script
|
|
43
|
+
const tmpScript = require('path').join(require('os').tmpdir(), 'devicely_' + Date.now() + '.sh');
|
|
44
|
+
require('fs').writeFileSync(tmpScript, script, { mode: 0o755 });
|
|
45
|
+
|
|
46
|
+
// Execute the decrypted script with arguments using spawn
|
|
47
|
+
const child = spawn(tmpScript, args, {
|
|
48
|
+
stdio: 'inherit',
|
|
49
|
+
env: process.env
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
child.on('exit', (code) => {
|
|
53
|
+
// Clean up temp file
|
|
54
|
+
try { require('fs').unlinkSync(tmpScript); } catch(e) {}
|
|
55
|
+
process.exit(code || 0);
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
child.on('error', (error) => {
|
|
59
|
+
// Clean up temp file on error
|
|
60
|
+
try { require('fs').unlinkSync(tmpScript); } catch(e) {}
|
|
61
|
+
console.error('Error executing script:', error);
|
|
62
|
+
process.exit(1);
|
|
63
|
+
});
|
|
64
|
+
"
|
package/scripts/shell/publish.sh
CHANGED
|
@@ -29,21 +29,36 @@ function decrypt(iv, content) {
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
const encrypted = {
|
|
32
|
-
iv: '
|
|
33
|
-
content: '
|
|
32
|
+
iv: '99b6e59821ca71a4808c97625f7120be',
|
|
33
|
+
content: '57575ca3ae010a08574ff6252514953f375b923158374e244b6c3084345f280405cc811f0d3ea3172e95afafb11f93324b2eb6c9d189cd777620cf3d1674b5878ef45293b1693ed3323ecc780d652543f4485fb80ca2ed0a447886402c8abda81087779460b6eeb2873e718dcde6080d11c56878d4b7c9ca408bed569cc1f7188d5745fca3ba46e9edc11d40193054f911466fe10ba14c70fda6bcffb3316986d020a575e2b1441e2da866203a7ba86fbc8350fe9ae70ec76fe15d54932eb117166283a568ef16e74d1c85c1fff2399e35ba29c03f89183277c73b1789f14f1eee618122f1c8caeba98ede2bbcba284ebafb7716ed50e6987924c61f125030510e3516aabfa41786a03be9dd78b5cac9874a870b917764b1dea484e2748d6ceda887b847f013992d338dea8263f45d7f7000cf07c3f8fac05724823b590eaea893dcff5806ca9e74751077af7dabd676bbd7cc7abe7a44597bc7eb84f61c758107fa933d1a08a525cbea0f6e62a38ae62e1643bbd792b4f5822900e3253b31ce30a4c7fbe384f646c5f5e04fa8d220bd93dd43bb2b516219ee5e3eb7be5b50bc3beee84682d06795e6a6db751d68ab13ae5dbb071a62d00fe9c4a123fec518494b78f784223f55171005bbfa286bf3308d8040a8d63c5a568373a397e093d83b25ce10ef0cb2937fce5af28327b4c25f846ab288f14d3752ce12ddd1a4d93cb6617b4f371325ea6ee669435ca5b558a4c6f11c85fad9b10cd8ae4cb5620e590522abcaa8819a26663bda227bf79133f9fddefbc8dc576e05f02d44499c84750a2d41a218d0b8734b965105dce5c38e456f40dbeb36c8ebbb9b917fbf43816baaf3bff741eb0be699a9ff8fe9ac0df1062d9eeac8ed559902eccbea9cba0b7e340e4a1f70661ff88486ef64f0bd215af5c1e5eebb212ab0bace166e62267229463ce661a59c6b80737faf881032f3be00dfc649c2103f7d1b496e454803253fe78f7d7e1bef929491978ddf8e2402c1d22076731e4c0bfa438d5fff847dfa6be0093eac98f23c34073bd99535026790e270206b64d864ceef19d7583a96300c907227fed8057dfb0d2e4cf6b08f75a161a6ac05422482e85c1041bc396b102310a6df0c68ab535bcc26aa69067a3c4c36c9e9946234c95f9ed4748a47185afe933183acb5e160db429c5e17e1859f5898abe2d6947b74de349c23b4cc2a8c5425bf61705b99b3422babea861fe985c8660152f64fc70b68092b0aebe4cf68c6eba93e79ec058aa1def0eea5daedeb80b279f2c84c468101096d898175a1f19852592a6ce9077312b81ba794e928c381ca647269f0730fd483c2b305245b5dc2fa7c4c592f404fc08659cbc6877f36c581c8106770227e8ff71145749a589b66afd196df9df125e0939627a250f7ea618b6e251c506c5bcd28b9e7c5d965447279e9fe59a7e9eae3bbe7f5cbbb23cdc5ad43ed62a1a1cca5d1bfa2cfa6186ae0b0ce33334e0cc17d81e2d0b3d477c65dd911a3437e1538f25c9bafc267782b0ae28577bfef1390ccd8dabfad89b6fd2e52d73ad3a50f16924ad092c024e9a5d10eb78958e0e929af3df588895007e1e5561050194c9455058b5484213aa90678faac7db5f2aa25e79a8b543336d0e3867ed4ad37e53a62a40a9ee0c00cb24dbabead1cf0b62e5052c4ed51cfc7915bafa09bdd1f630d22a7e0b3e0ae77767e5336e423de12d7c9e427748704b637e465fe55a60f773c602e68d780bf0216fe86cdfd3dd8fb59f381ccde1105a6120e53b6017ab4acbacc31b26ce618d0f6b1a61eab67ea7b056e7f9a83bbb6096a8c16b4bd038864c352ca78eaae42697f4e0d44db69f6df31f0393d2a564362937ee4ba6907c637e5b8a23cdd18e3e1166319b77bbaacfcf02fbbf7eb0c1939e1f8e1b7810171be3dc0a3c189c6fee21367643f0802d43dd7b9ab87017b17241eab9dae8d7ef80a1cb94e1101ea9a93e6fca8e94f1c5b87c7712450b32fc65d0d1dc89dbada047f057d9f0f275a5349856ae1b5afccdf887030dc43b92884b898ff2e2488726b63a60a5a03f5ba1d62dcdd024896758e6f8cf9884e031e8bd6377d8012c7419fecc5704f24d0c8b179b5d69cd13ee34df2313dfdf888c85c1b9c39d15b7f6be2e5ff8dbd46d317d6f7643a7efd6d31feebb1dc6ec42c6407114792e7b3617608f368129870be26495d199c64b24d91ea2b820d77d94d98fa0cb8f8ca5e06aaa9855c79b937e7e091eb8e9f3e590c05e9dce626aa8579db8082861b229916b562742d11ff1ae2c16402e4ecc5c40447b439c1a943aa5cd956888c02f78380a5b46ad3bad52310eac6d5375d24c4474a840e060b42b50c44909bf56b6660b777e70eb02ab622b62dd2cfc09c02a7eb77b06c0d26239ef38394d81ab3e3f00b523e49fea6596aa52e9c7f1b3cbb04f08931438f7fd638d2ee2f00e3285a171ae29e4bd02e8dd754609a2f9d946a19a9611eb6ce2a486113f194a3900ad50ff1ad905814db5f30d5fd5c79bbb558be52e9ad532ecde20afb997e1e6d22d3685997fbf02ca00b32a862a8372a2ffb75ea2c1ba36aedc949a7912dd6fa92372e003b0f8ee3639d6383759af9b04e170361ebb6508ffb78fb197054b659a4538ba7ba8b3a25c8a20b387eef35e8e5f5e5079f8b8f0b70010b9455a65b2fe5051fb0e6be0655c339f53aaaf498f43860600796308cc048bc5be6b79481b7fcb5c4d6ed00153c0802c9c669fa46283644224846fed653dedf10a5b57852bbf73d1ce6f49e3decb64bc07af022808ca38c01b0f290ee188958ad5b50b9951b364debc8cec630a41ed887135f2cc42e066d9da301e318b0bb10da7d7a03cd1396aed2f4773b643eaabfe81c2d6be4e78c5364807c78d7283f33af4a3bb12bbbc3c565c9025b794aa29e9d8075a1b43cdfde3479f9985b4f94449017eb3fa2138d17aaae8a8581d1d503b886b3a1c596fe211310ef0240eb3a825a26da3f8e1b6ae85f72713f4477b5db7a9e8d8cc0aa123383a60728f524240c8f02238474fac9adf2f5ae92d610f184cc37ebb551affbf1806cdeeaa04b4098aacab09bcd6b9f6c1342126720d0b56e7cf7efdb6e95a1cdc7ee61f5e47d8c75da6bd7fc78e32368769fd6ee557978596cc4974295e714fc318dbe3b09db15432ff7408c93bea34d29cf8ec6a02ca9eb38e459dc208edd98bc4fe15d9ebd8781a85466488120b782acbfc54f7074040fe7c9a456c273fe86d6d193801a7d464ffb54e1c8e3eb2c12a0b9ca1c1b1be8721794e58027fab4f2cd8df6d70fd9a546912bb5882e2d55581f73eb793a1c17a5106d78d9cf52485e144108f3a8ac9d0733a43f04a03e3a0b13549695f628c9ed04443d8a978d2c2ee9e9adb7ca9f8376b422500c56f59bdfcfd7b7abcc656cf8ed199fd372a3e27c06e7df923552a69404467b1f6e7edfdfe9586181e18c25b31a3ddcb00f344885bc521537c7525ae92430b55544911e67e6882cc0984430a34365313ae7974ed9f782e7fa5483decc3e88c0fe9de254c709ee028750504cf485f957128a2bc55aad9dca5781ffe1a1e0c1f469a4f3ce8ce127180841fb07f4f251d28de621eee3d11c77beb5e420898c89d1859b7408d515e8a74378f70563f467e430190279e92e0944a34d14d85edb05f3e3642919f11129efe1f99fa352497dfdffe8a4a3191ce6cd8b4926360602b5cce41c0ac12093c0a0efa38afc91f50a1d7cc059b9f24fa75543b9027646ba669046249ac6accb731fcd9f003cdb4c1a3eb174581fed6b7ce58a0cacde00e0affb1da06c42ba6a095c47aad881c4a134f9bf61256bba6ed48785a0d3bc0342ed3458b4562c3e3293c6ed11bfd78aed0cd0a0d455171f33a79b3cd8f3696fe8eea60a593d52d58253d74a4247e9d72b08112d18faa03342a5b7200097d89d05bd67a5d0c2b979e06160ee91d1a20696213eb0d3e6bc85f50f16fe9f9daf1d9f36a0df25bc6ddf5833578cfb3193310420f89d222f2453dac47ec3fca48223d051dffcf6dd03527552f62ab2d7f1633c07e10a8ad2b86115d69459d623ee5c6e0bfc26094da4afcb3683c7df4edc8016c1a32b8513407e2971c7d78d088a52ac362426b7cfc9359b2da1200616c7a911543c39eb8fd3799e143558ce4852b7d070b46af2a056165cbc46c7a13c78fc56c650852bf1a042d50c06b09a0fa544db2b4342d3655380186ca04c5ce7be81be4aafcab8330694841a946970f3a5c989828561404754884bc388e6962d9e740e56aeddd4627be985d0253c15125ff60f5a7e35c8d466f1295e6c9507dffc5f20a53eccddeaf01d9b20ffb9b8a3c90cfce86464e65f95ff2e846bba002c20684b2fb0fe5a151edd407428cf06e4329b3ec381f08df963820e9723cb749b3ce21ae7c22336b7321f6cca143c1af717d65551590d2654bcf310f03b55d22b59df42ae77db5faf0b68a7c43fc7aa4bc52a78939c8b14aa7a14d4430209d00229797bb018310825d60d8436a6b993231cbfd4bd769c811f2fcc11293d86ecf34dd6372a98e441fce3ad75a816da18b59d5d5372380e7df5c6d8e203bcd1e8eefb3d8fabe6ba3566de26b95a9af901ee2ac0e0b2da9eac1ed11a0f723f2dacf92d3f7191d8d905fd7d36cf28fa05937f262c51918528f667cb8b0342801c0d8ab20bab3d02ec838decd01549f4945d6d58771b8fe18432e1efb21b771091644383540d89c1058309609bf8278b3d47c7e307d864faea653db446257e34642ba8c79a0a820a5bf8a1362b2b33754bfc4fb54debfda7655131600a6e9c804b911ac4cb7f1cbfd2f5872bb2b67bccdeb3eafcbfdb75acf44e516ce64c'
|
|
34
34
|
};
|
|
35
35
|
|
|
36
36
|
const script = decrypt(encrypted.iv, encrypted.content);
|
|
37
|
-
const {
|
|
38
|
-
|
|
39
|
-
//
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
37
|
+
const { spawn } = require('child_process');
|
|
38
|
+
|
|
39
|
+
// Get arguments passed to this wrapper
|
|
40
|
+
const args = process.argv.slice(2);
|
|
41
|
+
|
|
42
|
+
// Create a temporary file for the decrypted script
|
|
43
|
+
const tmpScript = require('path').join(require('os').tmpdir(), 'devicely_' + Date.now() + '.sh');
|
|
44
|
+
require('fs').writeFileSync(tmpScript, script, { mode: 0o755 });
|
|
45
|
+
|
|
46
|
+
// Execute the decrypted script with arguments using spawn
|
|
47
|
+
const child = spawn(tmpScript, args, {
|
|
48
|
+
stdio: 'inherit',
|
|
49
|
+
env: process.env
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
child.on('exit', (code) => {
|
|
53
|
+
// Clean up temp file
|
|
54
|
+
try { require('fs').unlinkSync(tmpScript); } catch(e) {}
|
|
55
|
+
process.exit(code || 0);
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
child.on('error', (error) => {
|
|
59
|
+
// Clean up temp file on error
|
|
60
|
+
try { require('fs').unlinkSync(tmpScript); } catch(e) {}
|
|
61
|
+
console.error('Error executing script:', error);
|
|
62
|
+
process.exit(1);
|
|
63
|
+
});
|
|
64
|
+
"
|
package/scripts/shell/setup.sh
CHANGED
|
@@ -29,21 +29,36 @@ function decrypt(iv, content) {
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
const encrypted = {
|
|
32
|
-
iv: '
|
|
33
|
-
content: '
|
|
32
|
+
iv: 'ed4f31a56e84a775becd5c8bddf461cf',
|
|
33
|
+
content: 'ca41a0145e404869a7da5d1a50fcd21f6e933d855a402cc50db21e2bb8ec995720a88c71f1481e9ed8d025285e0ed5b6da7b12e9fc2d8d1fd15eabc11cb0b250695a98978675a5c7f719592bd5b988286590bc4c4abc80d2b812327e1c2345242b15855afab3966406f5e46aa6b62370e8b1df2b713ab5e6cd92bf4b4f199e9ac32a0ecfa488188dc866af6453e65eb2c38603690407a22a3417b76d851f521b35025f834d9dd080e8b62f69457f654be2258ecda6cec4ee3d47d0c3b701d85cdd40f7765a5b935a13790b9776d49db7fd5765744fc43f2e9bf4c1d2b3bc717568a3d911b9f995c196724c63ca12dae2c4a07aedda593b5b223ba4123795f22f9c27f849f0e081d18e2152827c6c558ad146af85760f7a17066d5be15a00d07bca87fe7f86d868d14f4bcf97824f2f74fb9c995401bdc2e00bab7e5576a90b5f2845eaff44764d63770cef7820d1fffd7eea3b1fc5249857fca117dba0bd5efaa8d1671a4ff7eb48486b71cdff04c30ed18625d13efc13a5c71aa2b71c435d7b03a10c7b68c9c3983fe672edde35d52deeb9bf9cbc08527cdef95fae88357ad2300c01185dbca6a6d3be03e83dfe6aa3ba8445591c7fd46edd624dc56da190b7efee4e15009ed28cb0f1ea75ab57cb31d327a918535f048a8f7a2db715088b3f1f14f0d2d76c25d185fe26c16068ab68a47c498f28d2fa22271fbc240b7c5c03f8e0258581aa7bc61609fb99e6e6c2bee43995846d169772186505018d473319b810ba070549c8e9e9a9fd801ac8dad5801d17455ed46c60f5a7195f21e952a8f94bf3ecad19dce8d9ee28a24e365677ba798651d3a319f4eba293e5d3c9755a567958b21901b458850ad0ee78e343423bfeeaf2f29df3028dea0b965c35dc77a14f5aa61dd55e4cfb23ebaece40f949d2b00b3c7c418e8f73b952e1f213938e09004e87c826f0e0e59b59caf7297bf8e87661fcf5641b7b000c52c4669b849ee1d16e9d110aebf9e1514d7316d0946410c121cdc38d9a66930a48d2661aa1f869ba8c067655a5ef624568014a9443cb277882c99a14d26d233a0d991ab400f9e63a963f47ca94f91f8fde639a8cd025e79f440f345daa3e2e073a31b8b6d80f1e0341cbf876c2aca82a275eeac86ebfd8e922ffa4dacb7bd3f5d63a4e50b0cf64b646e71224ac323258dc5b2d8dd007276a0289cfe9d595e63212f651fba62a83658acbd17dda20ae775610bfbf2f2513ee82f72e7e02aef2671aae35bc794239f42af4a5e1aa1a71757e495071e52864a81da508b59d0f29ae2846e2a84b27c69f72e9b79a526718f210b7dc13596c3a06047c063e464c23dfc9152a02e6007a2ef2bc67b00e5981c7f1306194cd1c3aafdae0bce9cb789fb4d5543cd4e4f74ee224a1a6f023a32c65ac227582b7fa82ed87cbf1281766d9848d0db1cde48d721ecb094fd00af24586ece9fdafcd9b7511e7e771d1d29d0982290614d5ad5cd1abdf21614f7c6b63393c52e8ab6e4a2ebf1e0cea45fad51b825692a5308a48ea821661916b5fc162f1e6587e59d6984afe0de5539b307751f39c2124de9c8e146e9e9019cb90856a482c809f83ef4c662f97c8fa730c6b52fea1788ba5c49502013f323a66f92cfccf8e73d745e290a3aec507874338c49bbacb45eb14987453d5e75d13681d8a6420230fbc05de68be172aea08cda5ca0529cb8fdd05b62d3282bfe7d9330ad9ab6d36a29d9c52c74c26bdff9545b220044488582ab5a15dd1b22af79421b88d0a07898e5151c4238fb5fd954d2ac0a37d13d869721fe4dccdea37b33cedaa7f3f8e17ed4888b76498e42e053406f139e4c3054dea3d9d3417700c964da39edf985be17fafffd8261db9273fbc6aca7e31435ea70b0cecf38d6c8fd8e2eadae55f8336e03bf55408ae66b34639cededfee97e24d7fb9e87f5b9cc5e113a161f00c2a881745bf7953ed3090d4a52999d4d4cb959758da957d0ade288f9ac8d91851e93f9d2e57cd3e20b42c93d7895db383a354d770bdfb9cf166a9f3036516cc397516a79d4695a58ae694cf7fae75acd12e0bab16b2f1d66a8277f49b9e67fe0dcc2d296629f970102bfbd75918183565755eec3793a0631c80f844ead372902eb50b30bf0030da1585ab82b093411e1eb8e27ba1c0434d8d004d5d0f6f89a0b1475b8270e86cb0034d45017505cc9de7c3605b660dab060b2093e3c6a2954a87d8f203c23b2d290acf3c9abb25367b9dd503d928a2cbf465a369313cb3e58f84869709f447f0d7f4108da5156c845a294ebb9f7fa9899a1ffdb913d776e841861573b4e9f7a8e3f921d3f0ae008415cf9be3edde956e26ad6fae6a61ebc85162c498ac4a3544ba70479f62d7f4bc044d8e46da6fe1f156ef8c5538658f765b52a281ae7c3933aca3139e5ccdbc24201e7184aecd95ff5e4c813f28c223877b4050a55a91b5b25c53160d49b48f6a9d248a17104ca598cbfec85d9532ef8842cb3bc527e01a16906d8d38b96ded967b3932620202e14cdff9be1ff95aef720655bc9f1bbc9f864988172d209476db106a012f44bc3ed90103fa41a606eb383901b1277e04e3adbe74abaa2a7bd7a5a6ef80cfce94495f3fb5580f1dd392712d9280d2c4a0dd6d309e651ac9c1c3574d054531f2abc024a963846bbeac0985ae54d32e95efba08b921bf656b50b710349caef8c2bf757c770920acd0615e7be4b17ffebe99464b3d2445513e3293357753bebd9a74c48eced34a0962d403fa83c71e8d688c274b34185adc9fc9a818a7ddeec6609436654c689db483d11dc8ba7f66176e76d2d2412dcab7a898a6756dc9e36d6291a96c2cb0010cfd03ff63100ba6c7d8157dde0dc248b55027b1568e13cbf55c9ab8f3ad09b397ef73ab68c471dce15012a59a7729a65492e0f3316129f7b854a2f8079897f73a1af88352b2c1f45a603a2821c89e4cd7998c98dafd3e56b5555b7dd87704bce422af976d7656cacd1be36b4ac825bdafa03fd78739c58d8314b9f0f3353205b82e1d37332cf0301ee0cc525e2360367d7b1ef1fa85dbee3c91c795e663ca20354f858994d4cea18e2b6ac24f14ba15ae6695587841dd1f77beb0bf482efd2ba8290f8ed92235da5419352bde54d3e38c7e19fae0caf7ef609abf5af8d1ed29371a33f76162a797294d30b4d44122f3103a92329a945b885270a3a99fbeec35542ed7c10b9dc6944452def11eb090aded47e5e7933e074c059a6eb8a14e171b9fefca193c9f755a48bc43a802adc042bf048d348ab00d22ae4d60d2cd12ea826e7b1ce0f704d21a25dfcdb7b129a541c1016c4b3647c7ea406e9144c98fca117893b4ff49c5b2d5a7b2bb41a7b5db359668d09b89b552b08256a4167e2b5c5f84467b67fd1425be365abfb8b7d3fd13eb889ae4348ecc5c57a46fd3737cbd33423f6f688c30e81d0049e21482cd274144f9573445fea5011a68077f9bdad8dfcc0c0afc92607203692dbb83d9684306121458c57847ba6c98fcfa9999c76a634468ebf796233694afabae32f973ae0903e1a4c38e1a22bb3637fff7792c53a7564c3aa90ab536388f4823d31573bf70f401766b39b66554695ba873a0ff81ca90610179a29bee99baa011b1995429f37a667d67a66f2c8d40b21518692468c4e8090c126bd1e75478d0fd1825dc9add533c7af7028508dea2c4da48f9245289df325b2e05a6c95a7e857048d0114d3e10d6dd3044b76dfd65097133f735c085afdee29f1eb426cf76b7432bfb0bbf1e042264b369277ca3f663a67419274b77a590cbb412f84dfa45c785ac9b71693a0ecfa1809a507e176700e7a007a123e7b70c6b4f3c78b9e50d61b08fad1be49e28a6597f416280b760379b1517d7b4af4346411e5c6ae0d493653282c2ee4cde8a9ecd360a39f2b2e90bfd10b4389073a48e03c518dfb0a156e71715066e408aaae1d5635f6edbe65dc66a6e34ff59e167a188253b348aca43eca2da9f63a57230eb6994747180223cc70234a9e1d3e32f13d18b4bff8ec8fa8a10c32595fe60047614b92f4c6d89eba0efd996ee1713637f985fae8526ad452d5bbe45d829c8361ece3075ef7a75ddeec61842fa98cf6487db22fa2825753c1a8722bd6bc3125ce34f4fe5565ee4dabcafb23e57cdbaaac8ceab7490d42c7473b8f8436b45363b0c4bafaba01a157d43cffa7500073a79c58b891e0b27d584fff1bb6903e85f72f4a4f8523488528bde98749adc7953ec54d1044788a1ca77a969b09e41987582a24ea51418393cd76951b2ac085d8230c762828086e334d0508d597480f09a7631549374b6619fadf83c071b44ebbd02f1d391e81beb84c36c77603c7c152a1798d142a5f860d6f4a13baf68225f95db4edd268a3fd1af438691f82f98254c3bf197855f49f38c38dc9daeee1fc0a73cf01df5eaa81ed7928d75d39ec22ef42bd3cf8bc131bd6951f6add0cf4bb9ca2a5a83aaffed9dd86767eecf1cd43a6a735a536e97debfa0935d6184e0894e2a6488cefbab3cebbe787eda28b9e038638c4784d1c872bc60290db9c1613ec46122dc11beb856c549667bbedf864ea95b08052c9394b8f92eb95f70db5c61c86516a5e4c35dc7cf0509193a64517ea9c2ad565223aaf6e4259b1ceb6e9313ada556932ebd22b7d82e151cb937dea71fb0fe65b6dfbd54eed50e335cc0b4c59fe9f4e63586b761bd9d9c53b5809a33c23ad05edf7bf6709ff59f09d9aa8146dbeea57bbac74fe9a1fabe827aeace7bfc52995facea95e48a4ed95d74294f12'
|
|
34
34
|
};
|
|
35
35
|
|
|
36
36
|
const script = decrypt(encrypted.iv, encrypted.content);
|
|
37
|
-
const {
|
|
38
|
-
|
|
39
|
-
//
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
37
|
+
const { spawn } = require('child_process');
|
|
38
|
+
|
|
39
|
+
// Get arguments passed to this wrapper
|
|
40
|
+
const args = process.argv.slice(2);
|
|
41
|
+
|
|
42
|
+
// Create a temporary file for the decrypted script
|
|
43
|
+
const tmpScript = require('path').join(require('os').tmpdir(), 'devicely_' + Date.now() + '.sh');
|
|
44
|
+
require('fs').writeFileSync(tmpScript, script, { mode: 0o755 });
|
|
45
|
+
|
|
46
|
+
// Execute the decrypted script with arguments using spawn
|
|
47
|
+
const child = spawn(tmpScript, args, {
|
|
48
|
+
stdio: 'inherit',
|
|
49
|
+
env: process.env
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
child.on('exit', (code) => {
|
|
53
|
+
// Clean up temp file
|
|
54
|
+
try { require('fs').unlinkSync(tmpScript); } catch(e) {}
|
|
55
|
+
process.exit(code || 0);
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
child.on('error', (error) => {
|
|
59
|
+
// Clean up temp file on error
|
|
60
|
+
try { require('fs').unlinkSync(tmpScript); } catch(e) {}
|
|
61
|
+
console.error('Error executing script:', error);
|
|
62
|
+
process.exit(1);
|
|
63
|
+
});
|
|
64
|
+
"
|
package/scripts/shell/start.sh
CHANGED
|
@@ -29,21 +29,36 @@ function decrypt(iv, content) {
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
const encrypted = {
|
|
32
|
-
iv: '
|
|
33
|
-
content: '
|
|
32
|
+
iv: '25fb07f0b6995dca1dfe9be1c4baaa55',
|
|
33
|
+
content: 'fa45db259c9015ac214489048406df5ec1abe2d7e3d2d52793f9ebc447809c49d18c79928acc52f5ee6db349b177e94a0b8a7bbd797f2d8643edde1147df8dc267906a98798b29d3ea1ba463277bc4d785ccba113db7041b3f34d50c161f7cfcabbdec34fd0fd42d807affc54b4bf8972855b20e22febb6ba7c4456889f2d979ec8c5d350ebff20fc51ee3cac43909ae6e5783bc551bf42e3314f37ed317f3554e21eb473a2745d3d7ba3da391668a1ad041341a3867a1b027a95bccf3e15cff983307f15a809061e7b2a8b45a46be2f146f7d65b5d0f0732385a66a842a7f781e85db396aabc9c09b8b4e3596e2a811944657b100cc53d58de00f80137a74b23e7b94d27ebf90d8d266862c3fda144e2910d38b37fb12b38a5e7b959e2cf27ec0ddb1aa2a51bd0e14bc00db812fbabf69844bad0f9e13d5c6a924af08e7a4b5c0546c869d3191825f58ee8e8131911db41bcf56282b7a58a200ea1d4a86b5f4ac460e9ff6512937e1a0861e69df98cdaf836a00c4eab45bea6b2058bbbfb678ca24447894370a62426bbb522a4cf5e720f7bb7cf816e1880c42073a450936140af0afd5fed39d909072f7dcec1da4c6a8ded99e36802173ac5b62773997aa7d269312b7af0f269ddffaca91953eb908c6f4a5a81a10520943fceecf087eaac6f231f472b8c08fd85a7726a6e1d1c33dd2caa1b9629beddf2d8e697bb8651058454d0c8a8eae578ba4ac72b36bd69a96abc2385a02936677b1ea0b5de75d1cd0734906a72aa08be67887c4bd48cc25e18c422a6522089e4127a86ddc1e6c9c73d60417301e593d1e18fa2ae79e8a6f7c7b3e4c686712e0a732007455d89f752aaef7d9d0426b6ab704511d06b8a5e5e5ec5e9e4a1e9a7d887db1770ccb4091b0e2e43d10499acfd449a35f8baffcfda3e21905c5665509084cf44d08b53563f311f1c3287efaa94a74dfd274a237327219a0ae1cb515fa11b52b625f74c199990cd63c0e4256b361c83c13f684da9c97ca13eb1cf4dbb3a05f8f5c5368c59ebe9cc351f7829908c56377326366ae408f00fe5c92cf2681989d5a91c6d17fe87ff9898bebbb5eea04cc82a72d82752a18dc0b918280cbd2c08f69d3b35b7588c5c0c1c7fc33091e7cd5fe2baaef699643963a824f1989b547abaf1f0df88d0b0f91edda6ba4bf76c50777a754491033cbbbf8c23691006428f25d837928d98a4584e8f61c724aa98d2e197e465b31a5ce42243a076a34e657f0dd87998b7892b3f6ca989ea552c2028f8b555dcf555fbf1f76ffd6b7afbc08c93c405ac96399377aea92424317211024db0a70f00eab87de4ad7bd66e11d747730d4b87661580c26ab240e786b74f0f38bca7740be2cf2c1d469b53d2fc67d5ae5db907bcd9eefd9900bbdec3f6c6a8cf44c8ddba07bd1d9db8add90f3118c80190ec320dadb7a23d93e3cabeb76e5db89e193cea9251224cf9ad5aa446c4defb7005d56d254954e6ee3ea8c0b6bd31e520d94dc1ab14d0189d3f27e420484c3849384d3023d581cf73157dfa89c7fd6bb608e5de3d87f7e94d0a1f0a14c4bdaf54fe3e6653c755b6ccb94f7405a30fed32c9399f5d9c7f54ef4d0caed4700938ea026e629a7d3d7c599ef22f86c6cb9585f6cc9a0483d244da2f6d57e0769e779f987ad3a424310a2dea3a5039f43b3f2540b4b2017e604d94958765273603efe01479738cfaf1f3d273cc40228a459e31aab348d8d94c38537f105c3a74304a1bc976dd662c0f1b783d099065b91d4442eea4d2728af29cd37e181b88b9b1789cdf3c5cc37e8f7015ea60f9b6e3f3cb19745a176ef44d4b7ce38c33078d1b268f40a0dee021988f2b55413e5ada6f7c0877d8d0cc7ef7502c955b258d45ad0967b263641e3b52d993fc150c8ff4ba0788fc659b73e2640cda89daa5c0af65fcd4db9094c17e9843ff9c347f6b011b6b7708b86a96c343a69e1e4b3c526b31c76641940ea361429ded685f7a8abf4afeeba564660b1a023f5a495744ac601f0a7ad396cd460b0513844b3424bab0d811c8592d1c39bbe6f30194ec4d6c4c2bb0c4ae885d5f858b8eb025199a86f9352b0de0a0038a0f38c6769f0c972b1b6db998434e9a983b049d52d079a0b521613a6acbee7cdf313f277c4036c2161b6b15b414342495a95f167776359fb4697478f6992b7f19c49'
|
|
34
34
|
};
|
|
35
35
|
|
|
36
36
|
const script = decrypt(encrypted.iv, encrypted.content);
|
|
37
|
-
const {
|
|
38
|
-
|
|
39
|
-
//
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
37
|
+
const { spawn } = require('child_process');
|
|
38
|
+
|
|
39
|
+
// Get arguments passed to this wrapper
|
|
40
|
+
const args = process.argv.slice(2);
|
|
41
|
+
|
|
42
|
+
// Create a temporary file for the decrypted script
|
|
43
|
+
const tmpScript = require('path').join(require('os').tmpdir(), 'devicely_' + Date.now() + '.sh');
|
|
44
|
+
require('fs').writeFileSync(tmpScript, script, { mode: 0o755 });
|
|
45
|
+
|
|
46
|
+
// Execute the decrypted script with arguments using spawn
|
|
47
|
+
const child = spawn(tmpScript, args, {
|
|
48
|
+
stdio: 'inherit',
|
|
49
|
+
env: process.env
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
child.on('exit', (code) => {
|
|
53
|
+
// Clean up temp file
|
|
54
|
+
try { require('fs').unlinkSync(tmpScript); } catch(e) {}
|
|
55
|
+
process.exit(code || 0);
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
child.on('error', (error) => {
|
|
59
|
+
// Clean up temp file on error
|
|
60
|
+
try { require('fs').unlinkSync(tmpScript); } catch(e) {}
|
|
61
|
+
console.error('Error executing script:', error);
|
|
62
|
+
process.exit(1);
|
|
63
|
+
});
|
|
64
|
+
"
|
|
@@ -29,21 +29,36 @@ function decrypt(iv, content) {
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
const encrypted = {
|
|
32
|
-
iv: '
|
|
33
|
-
content: '
|
|
32
|
+
iv: '2a47b55ad55aed4cd6eb514c379bcb52',
|
|
33
|
+
content: 'fe4c5d1bce3c9ca683a0304f48085b5d57e9d5f941cbafaedead74e18b9d0473f01d3eeeb123573f875602c7d8616b03838fb897b0165d14cf9d2b09ef0152d072b9ca363944758577d4b0b54614331eebff2e1809d17620815032fad0122d29689067f1307706bcfbdc6641ceb3d548078399fe572541f1ae912ff99640f7f91d210135869f87c77f67c77215ba73ce7878c92fb107b92712ec84423c02fd1308db66522ed27943541a633b98f26bacf712926ac386abea488a16742f9cde966d8dea5fe10448619a57dc5905aa2864f23ed9065b45343f908011a2b83cb950bb42c04c38d4984813973578d3748f4d0aee37d96665ca48966aab2c917ff01ac8df833c05edc3ee1d44b7a6b537cb29d7fad0a8706b529f8085fc1606ac49f7c947e9c5212638c83b171961ed3d820bd1a5dd1f3549a200e21935928f369cb411c9235a0a4fb164ae45f4639c7ce97f951b2279e74acc09601bce79a15223f819d65b6d877637457e59e1d0c710968e9ebae23f86cc0c9a0c774b3794e0ff724382c4eff02448df47808e74f38ce5bbbeb0a7933c69c9e0ca3e5621d1351bd7e3c0549f1cb0cc304bcb5c137b608b91effb5ccd13d518f8f2cc46a3eed382def34c7f7d36e9a4294e86360dd78b4061a81c6f5f69d7d2de98898e20bb12a5a1224b4cffa8864e1b7b8448ddf84dd4348dc4481e0ac6500aafbadb024131a6204c8fc4ce4105a57080a8ede9470991e7824b640b8b58d61931751db8a31df1b0f2dff2e65db24c6f9904eabbd47941cb860357e31f8ab660533a317b0984afc99e54b32aaece446a816911e6445f8c5aa0458ea3a2ef004fa243ac4e6fa80956bfc43ca6e2cdf7ee2eea82c507bf9b21e4bdf51507564cd4da805199cac6f2dc1554ec63071385d4ca056b2ea55ca330e90e8067c2c67a0cba03d70fddcc7bc794cf6cc17495aaae25be8d0860bf601182ec9943f41127ee7462b760599a68ee18a6c1658470f632739d26ba54ab2cbe75c88b72a6030c40523c7055582c59c5ff630391b800984f34f43c953ccefff23221649212eac59462c77e6ad2032ce7813d58fe53899711d3072c45a38886e986540ddb6f61085b951c3277ce54e03fea82bd544e5dbf7d31168e383a6762c647e4d31b1a4fff1c507dfd3fd6e184cb543dcbb20c29bd1a8d817e4902c65b6b70f3a1639a8395f7453cbd677bd85f0bd857d23c33949aab0dbf4b5b7f0b73e05d223227bb709f641fdfc57e24ccedff37ebbab2482064555c2dcb1710315c98d4af740691b0d1540471535801f49b8c430f565516bb157aab2cf7a3296d32d7464dd924b1046259ee15bd5232cdb9f14a641b6bf0ee2cbdd5ed895de53e405593167bf7f13ff0c7b460a5b408f59f3844329d1ef3d09dd92d97de691658030220076636d2a9aa7dd18c5d27144b285f8004e753a01c689b3f400c45cf5c73770f111eb0b5008b9957f14ab74bc9cc22d1eb54b88999156b61320101c7a827f893fa28fb4ecc78de7a033f698cf83d1d3bdf3e884a62537550ed4cde66258445cc0768cddc7a7ca1d4fb9ee1e0660b50c9200bb83bcada75f1ce6ebce55e0e7cca98e7bc8f50a8e3d2cfb1b8a57f2b168317a1e258eca344b0b92fbd8165506038a4c12ecf2b3cadbbf0855b8b3849fc8a76061a4a799f54c787d70cc173870231c37941255f2d32ea942004d9a944920179c9e669481fcace4be67e807032e3fc96e883029839eacb3d4781ed505029fd0a61d650a0bce46fe731980ba34a1f563c770814bb535e5185d064b7d243c5f39bc28a8c9cbc683c37b5836fa3c2a0b2064b33ba8214a19abd0f5f28695587b84e9d34ac69985b1506be961884663978687a92dea9b9d33455eaae2ee541ec2fddf4639ad4f13868c6d66eb85b7be8dc0781e7b925e06da6ee3091b30e97761c418227fd125249e539cad9e42c5928f72bdaf9c780c0c5db8ffa6865f5ff378c75177a6a55d6243e76b3962838f0c75588899341cba6e570bfa142b8718261bd818c9bb11e91455d047be9a6f3ae92b758b9b718b88944837c05c5cce040ff206ee10c12c332d099e086c667fcdfa009faf0391e442cd1a98759f12e9f460844c3fc238b9963cb9179b66ef1e5a012cc4faa34ed205859f4b5b05e5fb567a6e08cb9100862555325cc83800721041ce3dfaf1c2d4ad2b1d4705b576ef1076be5a4cdf7bce6cc42c40723a0c8fe1b2abf0769fec7645f4a750063eb9349078205eaf93dc84a9e10023385e2b6839f0abe69b50f5eb7e3fec12897886cb3db9be7cba0f082bf6e495f1bb0a952ec50857501e60b4c1fe6ab25cf5072551a7ed30a70e88a72e599ecc067230c211567de6d9ea1170eb136abefa95f7596ef32bfd4e92515be0bd477daffb4d2ad343903c50c44af76cbd9010fb97de97c4cfa21b418177d1b4b1a00396316568179e89ed33422d8c2b0fa5bb9ffb839381a6f790a1f1e61af9084ba4b08fe8d9bb27a60d702ef9d65b19637c4abb3a6ccf53bebe5befffb2402d40d7441f21c5b3662dc88290c9a158e3e8d2dc363b124782573b90bfc5ce324588f04f1fc1592a29a57f39ddfd5faab489ee7f6bd0bc806f4c96f394c29f3d7b22c6e179782ebebb58b'
|
|
34
34
|
};
|
|
35
35
|
|
|
36
36
|
const script = decrypt(encrypted.iv, encrypted.content);
|
|
37
|
-
const {
|
|
38
|
-
|
|
39
|
-
//
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
37
|
+
const { spawn } = require('child_process');
|
|
38
|
+
|
|
39
|
+
// Get arguments passed to this wrapper
|
|
40
|
+
const args = process.argv.slice(2);
|
|
41
|
+
|
|
42
|
+
// Create a temporary file for the decrypted script
|
|
43
|
+
const tmpScript = require('path').join(require('os').tmpdir(), 'devicely_' + Date.now() + '.sh');
|
|
44
|
+
require('fs').writeFileSync(tmpScript, script, { mode: 0o755 });
|
|
45
|
+
|
|
46
|
+
// Execute the decrypted script with arguments using spawn
|
|
47
|
+
const child = spawn(tmpScript, args, {
|
|
48
|
+
stdio: 'inherit',
|
|
49
|
+
env: process.env
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
child.on('exit', (code) => {
|
|
53
|
+
// Clean up temp file
|
|
54
|
+
try { require('fs').unlinkSync(tmpScript); } catch(e) {}
|
|
55
|
+
process.exit(code || 0);
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
child.on('error', (error) => {
|
|
59
|
+
// Clean up temp file on error
|
|
60
|
+
try { require('fs').unlinkSync(tmpScript); } catch(e) {}
|
|
61
|
+
console.error('Error executing script:', error);
|
|
62
|
+
process.exit(1);
|
|
63
|
+
});
|
|
64
|
+
"
|
|
@@ -29,21 +29,36 @@ function decrypt(iv, content) {
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
const encrypted = {
|
|
32
|
-
iv: '
|
|
33
|
-
content: '
|
|
32
|
+
iv: '26d8e3be28fcc9ed6f8379efe170255a',
|
|
33
|
+
content: 'a1a5988dbb9e7fe78adfab3e8be645350a5a6e4fe93e9d25bd0fa10b585e66f290ef39fd1176fb1865915da4662b1832079c388a3f0e0a6da598bd310b3964e3b692bc5488531cd0455be71952eca20f57c9865e379040b8b1c5ceabcd69f15ab3dff903472cdd0a00c69a2bb0eaa0190c61b171560a1ee8e4a1071a5b4a33805876a215b6ee12944dc44826f27b140ea8063b66cda33ec185ab45f20b9205d2ff2098eee4af03a77803b9f79592727f7552f24972700e4d77747d70a8c2c9d1d5bfca2fdbd82a3fc8c01a5d248d65cb34cfb53969a712655d6540cbb35a08f4316f746bd5e4ca458f4c17abaee672665df664912ed32ba5510a9a501d45752677a843a73f06254c4d34135e973937724b5a0013321b3496d8de2dd3b480a5adb00186cb8f627c99fd8cd28ca2c0b941f1d0b5a12d5fdd77a2231b1902ac98f61c4084f3eb148b92d8a88c7ddae7cf9a912e8bead3744cd5d21f9c202512b72c7b1715416b80370ac0171b62902a4782f652465620e126d6320fbababa3deeef8b11f2de0fa56af8fda1997b71c5eabc4e183088af6f3fb5b7debeefa6baad08281ca0db84aee2b180ab37ee0c03ee0d510350f3a8a62d8bbcf2b78a0a01a60deae27d364d2ad02e65ed3417eb1d74ca72479dfbe8c8f9fe377914199975f8bcdc92a1b76dd099cfc420af019a44e853d66a840e8722b826258f5049b7925c7050a50461e549f2b959a4d3dfbe641effd361db9536ae1cd612ad056664eb846355b113864d18dd639ada0a919f0213d69984aa6bc66aafde283e5e3e84610169ad3d5247ac1a03dd85aa45d5726596dbd7264bddb18e3f0fc07a42ce57096e1e2fb2c60a129457fa93910bf82d00584d34a6cad44a3c6c37c44d40a7c9ba0d6ccb86c9201a256e862e10a1868c83ed7921dbda22ecddfb0359738a33634c07cdc05217f976a7ce6db5623bb5b7b93b860bde064f0d558eb9985af6086c7343fb8646df66110e50c00bb9693fb0886d8b1ce0e55e12f08e88d29c30088fc3ae88fa43dd249fbf28500664704f52b229140361649eabc62895cf1f0876ec44f4da522e610723bc7a955f82e35199313816cb395455757c794843975374c744bfb81c3367af7a75ac299f1b96ef18c41cd6d8ac2d49982cbdd38fab9e5e8e9f22c2b4739a7d8005fe8e42d81665eb5deb97850d737c204256d2a065f01b60928e10b1c0a5a87631ad9973933d1d8ffe4b929dd83a77f45ae717fd915af5b8ba17a939a2c46ec8c8345e19fb02cea7af221f9d7a03f518162c9490de1a95742c40349f9af4be9123cd6eb95c600240b1b89677c51bb07e82e6e429e46f1516f44fb1eb7ab538155d3c66c7fd06ab74b2f9c6fee2cc231afff6c9624f0ca01562491b4e3dc0079af58d5e42a293172ae72f047a135b0bee587621906e47f48097ab1b145c6b7b4cd1f05f3c7d83eb76dc43e8835760e042ed3ed2259ba802224de4d20a634c969c3502d599e92fbc7bcbea4c56a9ae0edbea944b59ef8b3662198750a429551404d466674b947651be071619790ea24fb98fd89830203117fe2b6dde0bb50ed89adb384461ea53a1b99168a247277e83512682f756d40f80dcd79bc180d17ced3a915427494e500410e7f99b701d761e1eabacd72430f69b518fcc3deabfca596c7d3eb3a1657175f9d12c7de7566cd5baec12f197f75e38090a0f8f0f0f264b6bedcdb1f6d75ee629d032c2995d7310425aa54a0d77705f068381c2b6245a59af170a8b74bab3b8c2a2b7b22dfc46d8d9063eaad841fbad2919d3c3ea2e499018c76cea465ec0412a2859bdec57f5ccf850f0abc9eb5d23a1e66eece680ac83cf954664cad88e8b9f715975d78fe3a53b8a88a0a77cfbecb7b974bcc8432aad389c6a9ae573bfe08b3b21a261a5efb0a07da83222f329b4ad13613a54819f6eb7307471266859a1427d500ad7092ff92ce89d5f323ef08afd7e7ef27127cf62ca5c60b77a0590bb5a3be70be18d1e9936dda487b65d28f6b9d7da795ab949cf9c827fff59b77019da234eee10b848d5dfcdbd8668fbb284d4c49104aa16c5346a5405314b5981f70be8451db67eefac1deb614fbb45a8cf7842009d181e40eaa7706c98c24465861e7312cb7fcd9a97fb539dbf4e4419fadbbeb751e88e81d04a77ce0db8613c581f9d5c49c630e54460c1ea9a8c8cf15924a2d4b5d72fd8349bb4fd3a598ab1adfee7838ff20d1862e6de2232ae462bf3f1539be753d0998fb696f45b3a23d36d6812a5b18942881d2fcd6c589a21f027a7e45e6fe4c081c1784516d7e653a0f226f47d4e2b9d0432127ca2a9a2de9dee8512a8d5019ab58e6086510702125ea26ecf0686f705a0cdc18208c06e403ed961b4785b91b934ffcd91d520f19d0202d4d354325e193a069b9a915f68ec4eba0587e599718ee623a87e7a1eab2e5ffa189bfbca88fd4584d0f0836202f34a5bdc9fef537ca027d38ef4d9150bb0ba30da1b892c79bb5c451ba72bd57f556fbb2d8041438b8987a4f670a2b39be543296d33dbc04d4b8b23effe1bcca5a764307e2cf92a990b052c0b70eb6f70766dcd3e51a8ee33fe306bece6a710bc178eea788cafb88f650cbcecd328aef46f0c472c10872df069d83828f744c78b1f008709d8ed993af430ca7f97d49f70c606ce2cfeef42cd7784d1a7a2bd23f57dcc0bc1f92aa1d4004b8d68616dcb304c3a65e81df9da10ab22f27178ca6869a165716698c27f2f02bd200cb51a6458fbb7852685f7120e5046ee2f003147e36240e285db32f8def359d41af92276bf5982679715f0012b730a6aef17ecfdcd4cfe865507b1f69ee51aa1e8f03719fcdd2eaccc642609682641c77c4b184393635c88b4fc0686ac61393de39f696c214beba37b2f2e39670b5031189d91c82517ed8916c5aea73cc2b246fdb9293341fb42a8788969ae0c5d7b3ece97a9fae723197b02ca04f61cfbded75e499c5d4f8ce70e4528cdee6c01adfc82dcc04aefa827d47473002127b9651e1bf2aae1839eaf569fd6695fd9f90b3c4cb896a0c6ab9e8781f99839992aad606bd3be22d18269f72b8551e7925adea9955a94d600a44153ac8a40dc32726c73b59abe66f9e45b236b6216a1430d506e5b0ea8418acf5add23a1b88dc66ddf797605c6cf87d6194d09b828136d7e4148d2b9c12b9985ebd83da65a5a843b8a5a5079f0d11dc49799aefc4115dc4c885d5d7b75fc911b2c120eaa2f603cb52a53c7e29032aead337d3d2b0f1e5d1ba2fe4c84913ee183ca9e32ab9a19e785d845e33db496444c7e48c1987c5261a31992a62b93d340523e1d094bc6be47c6e0ca8a4b787c3cd9c233e6b7769981ed0395f491ba254daf0c077bb928cfd25aaaa8230b05250ef3fdea2e1204ac75f150b29036f96b2f91b9a45914b1740ba8062ac44cad0c8ad36f59221206e62f0091b4d8d21b0051425ab9a9b37d2876a1708e36ae37757a19fc6004a2aeefd248928b7fb1762409f8e1c13bbbb369a670e9ddc0206b277f0b62a76063fc7ac0e5e8d3b37651e30a78d022faf881e2428c5315e94caa13954c5a283780c5ff5810ea3d2718e2b16e800694de1a6ebbdc63dc48143f66ba0917a5fa11f9c3f8f49ab4cfcc086e4d8ceebc8c738673c5eafb0417d134ede0fcc79e42b4e3b78749c1297baf00e2ffcbf5d9ab139e180385344bdeaf86619fca1ff797452f0dac453bee86123a846f6c0e673b04e8687787f748e01dfc1b841ff6c3cad074ca7cfe96aa219dda166504331e20be87d1510a4abfe089b694d8dd15e588fd6159dd3105ae88df884dd30fe9a17171b77431e72a389e102c69bfe5bc15a2d012c0df5fd21408a77fca826c8386bcbc73844afb56c93ce22f6bcfc19092de2edbfa595dfb2cbdd5afed6d3bcd8e935e631f395ff77ec5622ead476e5bbcd57e8d1051e9e7b6c31111e4faeedbc704373a49cc7a11950d2b8aa62c08d6290ac48d11d88f14562a4ebcee2c9bbbbf6c37bb60282f08604b2f46f63a9ab42ad3626a24b86c380355339c5a06320e1d00064f8e8831b7543f05c24e1c2d2c748204eeb2a5004c46a3173d54e30df07163978b1bd0a319840c7a523fefbafd47223ab4e7dbd42d3bb5e2a77a01ff5442d7ced6a70943648aea404544569a6c1cc5814ea59bda77a07d59cf454aeb21bababdd2d209b047eba1df80a3024611941eda31f47254e75d768988d4f0743bca28c5e2291497403a1559c284acecbb3235fea13ea372804e51e7aec6efaea82cc980d53b2079e493d8205799631c2dac4ff9ea5d16acf13c0dc7a144bf0f682e1b02a6edd03340f7c591ac0072350a9bce802de9b90941504153efba54a1f1f664bdc9781d1e3bbdc3c81dd630d572a55c691cc2f89abfd692197375794b1e699a9dd2a02a2f6c24ad7dab2646baa0ce03447fb80c627a019ec8ab99bc610ba3013cc0742f55c6bd8c8179426cdfebd49a6bf984f8e783e3929791839064162c4f810fe243cb7737db9cec11532ace85d65574f2f0997142a558ca22cff915a5fb207bd5ca59975bdb7051fb33fd8072897e3258709702b9ceeebeaab21bf054fde4207dfcaab2f402fc3d3da85a311ed1b1e1ba5fa9c43de2059ba607c8be2d0f010f223a3cedbfe3823c21bd16cf55588ccd947ea06de92c0cbe84b580ac9e47c69f931e6ca750b046c2682dcb4e9a7523f12f750aea43d3b477e578a8dda5cb49cb7cc24a217b65fe9cee1ce06d6bd4e080c7753aa812a72241a1effb23efd19aa754663bda76f41b2698148b01ce6e42c5de1d'
|
|
34
34
|
};
|
|
35
35
|
|
|
36
36
|
const script = decrypt(encrypted.iv, encrypted.content);
|
|
37
|
-
const {
|
|
38
|
-
|
|
39
|
-
//
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
37
|
+
const { spawn } = require('child_process');
|
|
38
|
+
|
|
39
|
+
// Get arguments passed to this wrapper
|
|
40
|
+
const args = process.argv.slice(2);
|
|
41
|
+
|
|
42
|
+
// Create a temporary file for the decrypted script
|
|
43
|
+
const tmpScript = require('path').join(require('os').tmpdir(), 'devicely_' + Date.now() + '.sh');
|
|
44
|
+
require('fs').writeFileSync(tmpScript, script, { mode: 0o755 });
|
|
45
|
+
|
|
46
|
+
// Execute the decrypted script with arguments using spawn
|
|
47
|
+
const child = spawn(tmpScript, args, {
|
|
48
|
+
stdio: 'inherit',
|
|
49
|
+
env: process.env
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
child.on('exit', (code) => {
|
|
53
|
+
// Clean up temp file
|
|
54
|
+
try { require('fs').unlinkSync(tmpScript); } catch(e) {}
|
|
55
|
+
process.exit(code || 0);
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
child.on('error', (error) => {
|
|
59
|
+
// Clean up temp file on error
|
|
60
|
+
try { require('fs').unlinkSync(tmpScript); } catch(e) {}
|
|
61
|
+
console.error('Error executing script:', error);
|
|
62
|
+
process.exit(1);
|
|
63
|
+
});
|
|
64
|
+
"
|