devicely 2.0.10 → 2.0.12
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 +23 -16
- package/scripts/shell/connect_android_usb_multi_final.sh +23 -16
- package/scripts/shell/connect_android_wireless.sh +23 -16
- package/scripts/shell/connect_android_wireless_multi_final.sh +23 -16
- package/scripts/shell/connect_ios_usb_multi_final.sh +23 -16
- package/scripts/shell/connect_ios_wireless_multi_final.sh +23 -16
- package/scripts/shell/create_production_scripts.sh +23 -16
- package/scripts/shell/install_uiautomator2.sh +23 -16
- package/scripts/shell/ios_device_control.sh +23 -16
- package/scripts/shell/organize_project.sh +23 -16
- package/scripts/shell/pre-publish-check.sh +23 -16
- package/scripts/shell/publish-to-npm.sh +23 -16
- package/scripts/shell/publish.sh +23 -16
- package/scripts/shell/setup.sh +23 -16
- package/scripts/shell/start.sh +23 -16
- package/scripts/shell/sync-to-npm-package-final.sh +23 -16
- package/scripts/shell/sync-to-npm-package.sh +23 -16
- package/scripts/shell/test-local-package.sh +23 -16
- package/scripts/shell/verify-shell-protection.sh +23 -16
|
@@ -29,32 +29,39 @@ function decrypt(iv, content) {
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
const encrypted = {
|
|
32
|
-
iv: '
|
|
33
|
-
content: '
|
|
32
|
+
iv: 'c87b3377fa11e167378d0a2def26f4d2',
|
|
33
|
+
content: '357c34140da35ab078a5ee90472bc2dbf3cadcb1b71895e26a0ae88190d69a771d093f833a70534a531032df3fea55c5ebdb71212eb9c0b62aa17d2b3c7cab95739e99e23b39ef5ff8da45ab98d1dd436f16d2ff652c4a199b592140bd1b827c55bb24ddb37ca19749339a573802fe101d4da301fd79323836499969a95feb702c2cd45f736c2e7623a19952c32dae9eafeb891a0f2a005653ea6fb1453195f85c4184dd90eab59c0e41cb589e7b98e7c63f68a7951ab4728a916232d1b98b4c6628271cf3591b2a76c003323841f68608ac3227d086806b47045b11afb661f3217dfc0122552b1e091a0eecceac72295128075208d92c42fde524920c43c25d845328b68916339d9663b5319585e9ac584d38b5c742054363b155f0ac9155615bd5b131b6d24a9ea0ea62f3263a4530ee541c43dc932237a71b7bf1c8e1c2a1bb3a1543ce46f4280fd2f500bc8ad0b3c377009761729ca5a9ee5f79cf4ff9a07380fd30a36fd3ee01122fcc3f274e91519118d9e2f888e5b3c76d3b47af130e0ff5c105ec26e2cf43ffb63a7b139c2100a1f0004dcaf803759d08035d71f84bf0a20142e43bca96ce1a46a3d4570772c3db6661eca219782fd54d7ae6b592720e26351cbc5bf8ceaba9155c8792f1dbb0956a59a8ac25e3c19ca0c450ad2d3ada2f1bedebcd2f5a1487e08db8a349ed8793e1e08048af96b00b55c2a7bb3d637c3dbbfc5e9c9b8af6b1a0212536ccf8a0b3274a1d1df34735ce40b484d2d861d9359d662e4b73701b78393fae1872f4a2cd4cc55e77287366d383947b4edf647d184d9fc6f2e595b64cc8c013a2aef8c168d8c97d6146b03be6379ef1b8d41f98ab2e5778752cff79d7180a99e670c0f56b324bb83ade3e4adac2fba41b5fb0c641b0fb892ff66283ad1631ad6897aa6537307e0cbd05cad5c885fd3a85bf8bb4139c962138b12f53872a93d3fdd2c1051ea58ea60048c9a6d45839eb31fc8579167c9ad54e7f505011ea9fe1512212d640aaf4bbb05a081e6793dbb79600127dcd494abbc2fda3f34469bb3ea332d0cdb2c4e5c354323536284424538456595e419051a03eb7e33b4c5e9e02f9685ec793ddec9459574cf9f7d21fe4ff7720c57698e201d446b8396a327aeb8a01d92a16413d7e32260e2a5a1c635ed21d29349bf351eb2d0fbb74861cb4eaeaf361eebba611c1b33c24807222288a972ddf26ccabe07af9a31d161b5891b0a3b172ba8e39e2845f83508c0e775776f1d0a72ad466081ae6ca23082eb4cbd21fac94ae3b136ad2743fdd55f8a324aa3ec09dc38a9ba27193c7679582557d19e69f075ac14bb4db8a9e362b204d7bb81d866f1587998dd7d2fe8c401bdcfbe9bf1b755db0b10aff5c5f2bb4241134d1a4d9f56dc790571679a29f4092b3f1a52b42815891bf881be3e633c728b8a44893171be556797b1bf733436e08214ccb772b18b4a187b3d0e345b217942c8d0897e37c17d235d52e4c5b125045138348a41a89377716e73c9a7ab8f9ccfda60b5ab962374f46bf188373d99cdfc537b332fd9d1ba73340aee77b2794c9032c31b0cf2c'
|
|
34
34
|
};
|
|
35
35
|
|
|
36
36
|
const script = decrypt(encrypted.iv, encrypted.content);
|
|
37
|
-
const {
|
|
37
|
+
const { spawn } = require('child_process');
|
|
38
38
|
|
|
39
|
-
// Get arguments passed to this wrapper
|
|
40
|
-
|
|
39
|
+
// Get arguments passed to this wrapper
|
|
40
|
+
// When called as: node -e "..." -- arg1 arg2
|
|
41
|
+
// process.argv is: ['/path/to/node', 'arg1', 'arg2', ...]
|
|
42
|
+
// So we need slice(1) not slice(2)
|
|
43
|
+
const args = process.argv.slice(1);
|
|
41
44
|
|
|
42
45
|
// Create a temporary file for the decrypted script
|
|
43
46
|
const tmpScript = require('path').join(require('os').tmpdir(), 'devicely_' + Date.now() + '.sh');
|
|
44
47
|
require('fs').writeFileSync(tmpScript, script, { mode: 0o755 });
|
|
45
48
|
|
|
46
|
-
// Execute the decrypted script with arguments
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
49
|
+
// Execute the decrypted script with arguments using spawn
|
|
50
|
+
const child = spawn(tmpScript, args, {
|
|
51
|
+
stdio: 'inherit',
|
|
52
|
+
env: process.env
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
child.on('exit', (code) => {
|
|
53
56
|
// Clean up temp file
|
|
54
|
-
require('fs').unlinkSync(tmpScript);
|
|
55
|
-
|
|
57
|
+
try { require('fs').unlinkSync(tmpScript); } catch(e) {}
|
|
58
|
+
process.exit(code || 0);
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
child.on('error', (error) => {
|
|
56
62
|
// Clean up temp file on error
|
|
57
63
|
try { require('fs').unlinkSync(tmpScript); } catch(e) {}
|
|
58
|
-
|
|
59
|
-
|
|
64
|
+
console.error('Error executing script:', error);
|
|
65
|
+
process.exit(1);
|
|
66
|
+
});
|
|
60
67
|
"
|
|
@@ -29,32 +29,39 @@ function decrypt(iv, content) {
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
const encrypted = {
|
|
32
|
-
iv: '
|
|
33
|
-
content: '
|
|
32
|
+
iv: 'f5415c932ba5632284d1d10177538b0d',
|
|
33
|
+
content: 'bb818051586e8df9dc025c794745e90f834815a551983a7f4cbaf94865fcd0d415a6a2cafd5de053556f13eeb63309aacf7501c921ec1a16446b76eedc91ef3548a725f6a11871048b4bf30fb237d5a8113b62bf0685a4eca0986dbdc9d82e9220fea6396f6074c91b11f444fc322cab47978430749a56b6f0a99ec91c1dc91d54ca1dfbf70100fc9de2dd5c81c0a73ee9d0e09072f57fb5ab9ce17e7e60e9e187ff8cb8f31ddc5370f129e48e244a0bd0f338c1c5d657b0cc0cf67662ff584dd065fffcb8ef698f61853be35de7f84f76c546971b6c99c8c92ef1ca75f923bd5c1b5c9f153526e9cc59efc1caf858cc3a8460cff34ee1b976d1bf1432df4dbda4043b33cecf3224702fb08e64076570d6b2c40ade4cdaec0f7cdb47861888df79a66e4915331ea8040f859b90c23154ac20584f7c36530fd4dc0230f4c1f34bda9c72d449562cca91ac200866e939171c15315dd4ab734f01d7f58e5e1e2612957d82d6aefef3831fee102ed00bfb9569d29be55b8b065aa3dc751f4380c3cdc8cb90ab2fc23bbcc424a52d7ea229a3ca123172b53aeef1261b6a9963b0195542cb58ec22f1699f23e51366a43a18f908c1be19555876566b39b2aa2356bfba20797392e508306629eb0d43bf26aee56950725cabbaea2cea83eba3234377c9722e9de8faece0d3c921cd44ab9c79aa8ee9142e3e091d1ceb1264aadf2218aae1cbd8291a6ff71f6d2290f2c4f66add63d44eaf5b1485ed8c532d13a55a4fa60a1885cf3860d2a1217bbaaebc0aae8ab920a8dd253028726e5609a0d9d199f3576cad91cd3f9a93b9849c7204ade968689ae253591e47d946b385d2bb911b2ae8986c7ab162fe437e1ab5abc87120e995bef6b047a27657fb085b1beb059f986324584acf6f585b450b84d8f7b87bbaac6280373f923bcc6657119d9963ffcdf4b7331a7d88e2ecd68be81d446cb3e60235c0fb7e5ac59a87902dd56a0329c6e97b446f087d036a89c30ae7b8446596e9138466fbc90786ff4e7ad132d9462c362e79a7e7dbb38316d591bad0d1458564265177bbdce45fead989f5d9957a8eb6a24be24919fe91b9d31b9c855cba67511a84732ce65b61c5475a3158f39a8c55d70b6d7971184e2301ebd248e6c736f79037bf30cab4d0dcedc0b06955baf3dac872649a0d7b3b82cc7b51f6344258e52767fd2122885e8215b3fdc1159a25dcd5d262847effc22febda93ce3ac9422ab5b0cd76a315b5a5932988e9979a105c98566b24358b7d996d642381eaf16052fc167322654bee957e458edbed2df3ef40f7fecc865a3bf91cdf044176ea804c8b5c9c8f364d5c9813fce59b3246520a26df5a0d76dc6c4e78caaaa5c118454fdf1af031ff1470572537d4f552c09c80727d4d7c589b8dfd0be504ea0731305e96e6adf4a9ee1c2b1b82229fc74803c358d03421be15ff79637753539d7d52e53c0021f736fbcf40262e5654b71cf7a4f54393771d6d07cc24fa5b703cde56f018ec0ef180d112e7d463bbd3baa65a94ec83e034eb2c0434de0efc0df5802ac78cbaa09a6278480646eb19aa4eb1bb2b3fe3c8e1ac4ba6239c8a66a7717631853d9bbb6d131b749cbcaa86190cd1b0d00d514240037d23fbd3c6884fe89c48f2e3c45576021cfce42db32e2245e9d796ee3eeff5ad14b60743d8383045df05e565ded2c0597ad01637c2ca89fd18d7f3c18038e3a5297e31e2cb1b6f971d0d278597f298c5bedb40d8b6074f100d3f54336e8d248320feca43b15b6b9d6f0235529717e0ea0685f221a511a599bd236483732657cb4dddf92d5a22d955754428140486161ad2c1bd61b6119d4201ed9e24809d9be17cb67ce9e1ae0d3f8a407ceebaba5f6935b6e6422dab4a40e1d1ce0e53effe6a4f0b1532ce2b37acd08428990095d5bc55673de54b221db6fa6e2bfe0700367929d071b511129a0ec7aa089ff6b8f70e7251ab0b93e300b84f110e06415141c786c3f6700a7be1a9269e2359d95818521efeaf49eb3a14e5a5331dd0efb9c43ddb32960a8958a3d7b69380c7e4dec84293e0fbe14095b50dc1cd71e9932a8de4ce72c2dc4da9d91b8927ad091de098ed301bf6aa83b4cda4e0c53a82b2443f31847700be1042447093807157d7c82120ced0a5260efa9d8277b75184c76b157d6240a9cd561d734c2c901334cdccd3033f957e42b29ada1f3c00953d5ee00b475fbad50b66c3c6977373a99b4f687a6b7028d8747d141d8d01e977d59acd22b205619d15c1c2fed16f038d74c2be9f4928a910d00b7254186d91ffc8f11679c1eb8dd25aaf9f2468a4d93a9886f7cebd5c7a8e5c65b558900ee9b30eab643ab981dceecccac414e83e15c3050a2deaf9d67c7afda6d236fcf420b00055af8bb8cbed1b1cea970ad43d32908e1ae67770354ba94dc48298334eb1504bb3bf1b8f29ac36c81fcc97e6797fe5dc1ba5bae72e291fdc54a6a80859530f71891a8fa60cb1e20e74994bebfc8cd742948ad48387f51bdaaf2a82e926e9931059efe84943a05d53433d8918d3ad1d3d6748926d29a199d8a243180a8bda859cb574bb7e9543b986b19c28468a7445ebef3a62f968f9be6f0b5b830b5717c54ea2b114590cb9fc12070e1ae771a3166640b7afa2a52d71aad112a5ae264f1930f69476207c3430202dcaec3a39e9c1708844b75c4e50427e7ef6b07ca8005f2fa00bbde3c45ee1c318053362269531e80164937cdc11553f4336d4d9b91cea06737d37d19c3d1752d789dd3491b67246a2e50b32dfa49fd692e506f11bd81d84ecb62f6386af38ad79ae05408382b6855cdf73fd7dc1e0c2071ec40384bbf9e4c9f484c7314b62a134f26b366564e8bb86f05a0d19388da96f3aac3577377e34580ad4308f4ca43af374f341fcdfc0db8a2289c1e76cd7a88b315f5f8d7064108a812c7fe5578941cdc030d2be96a715c4c7636aefb7b9d04460bd3aaa6cb1a761d976e85a04c390cd12a14af20cec7a74cafe776f3811e21c802db38b0061bae31a5178e339b302e4a478db9e307b0d840185ad61abb70eaf72b04ca88a0c48f2a5b89a33b0fa928be0cbf867414962faab098b6739fef18c6116a88d341b0b0254f064589d6834993364fbec251ba3fe892abd0ba507ca1aeba728353f718884bfdff0a0955dc486defa90309a70a34730f7a70f080068ec1477fd5dbd7335e9dca0bb9be274c5c25eba2d6ab2c064b452c69ef2e6cc853f5b381e54f07124290b56d9c2334131463c418efb7eb5671f1dae3700b1a761346419d28bd675ce58a20d7502e248cf4da635ab817f08166e0de7c692a7cf27d2ddab2be746b0fa9b482045c5742a05d1e0543a3e3742cd6f761bc83a96d1a8028c71858f196f8ab08a1d7e5711c8c30f01a06ccd6900b9871e8c00ee8b53ff07b66ea2fb03322398428a7c5b5b7ea4c5f3ecbb57b1e433dfdf9f551cb5793602f38cdb2fe59596d25243430718a5db77090a9fe515c882126af3a07d7794b9044b7bb385fa3f1dcb5745786456d48aa0259868bf4900b6ee94ae577cc3b87f7a9661b396cb075bcaa26f4a3b6c0c32e1981e6fff4cd88f1561eacca5ddbe71d4832d28f18274ea882535080dda9b91a7135416f2e86b7ee0f9d2399e09bf8b7dfe0c5b6aff36469f393db00881bb73d40a071e4fff'
|
|
34
34
|
};
|
|
35
35
|
|
|
36
36
|
const script = decrypt(encrypted.iv, encrypted.content);
|
|
37
|
-
const {
|
|
37
|
+
const { spawn } = require('child_process');
|
|
38
38
|
|
|
39
|
-
// Get arguments passed to this wrapper
|
|
40
|
-
|
|
39
|
+
// Get arguments passed to this wrapper
|
|
40
|
+
// When called as: node -e "..." -- arg1 arg2
|
|
41
|
+
// process.argv is: ['/path/to/node', 'arg1', 'arg2', ...]
|
|
42
|
+
// So we need slice(1) not slice(2)
|
|
43
|
+
const args = process.argv.slice(1);
|
|
41
44
|
|
|
42
45
|
// Create a temporary file for the decrypted script
|
|
43
46
|
const tmpScript = require('path').join(require('os').tmpdir(), 'devicely_' + Date.now() + '.sh');
|
|
44
47
|
require('fs').writeFileSync(tmpScript, script, { mode: 0o755 });
|
|
45
48
|
|
|
46
|
-
// Execute the decrypted script with arguments
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
49
|
+
// Execute the decrypted script with arguments using spawn
|
|
50
|
+
const child = spawn(tmpScript, args, {
|
|
51
|
+
stdio: 'inherit',
|
|
52
|
+
env: process.env
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
child.on('exit', (code) => {
|
|
53
56
|
// Clean up temp file
|
|
54
|
-
require('fs').unlinkSync(tmpScript);
|
|
55
|
-
|
|
57
|
+
try { require('fs').unlinkSync(tmpScript); } catch(e) {}
|
|
58
|
+
process.exit(code || 0);
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
child.on('error', (error) => {
|
|
56
62
|
// Clean up temp file on error
|
|
57
63
|
try { require('fs').unlinkSync(tmpScript); } catch(e) {}
|
|
58
|
-
|
|
59
|
-
|
|
64
|
+
console.error('Error executing script:', error);
|
|
65
|
+
process.exit(1);
|
|
66
|
+
});
|
|
60
67
|
"
|
|
@@ -29,32 +29,39 @@ function decrypt(iv, content) {
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
const encrypted = {
|
|
32
|
-
iv: '
|
|
33
|
-
content: '740eed8702c8ea16617a4fcde05639ecb3e3ce88de2db8c01bfb8ce2ba2b0d9ed8ba76376aa54ec5b2ce183467273ff743634be6ce023fa11414ad8bff00568df27218218644fe353a303d8c83b6af178d6b83e6629d4908f1b66f4bc181a0013c61a31ac7043ca15546b5195e8848d4ba7b6d11ba06b5cfa7211df7f2d12e243555722afaa07af8b3174755a9c1827d781df1b66338dc9c4a66289709de139131b8c31f355d3c0570a13ca283996d37c6457596396e3bb6a9785bcaccea6cbd1643ec495d3b2c8372bafbd506266e72ada46d4b00739ddf6fad51a17200ed4373de97317792f66334b3c41ae04420089037e6bc7f390d189bb915945df4ab82eccfe616b1494884facada1e6712db3e7d593fc936395e14b9a216090f94cd7a69faca5d7ae671a88918a5a8115db8c64f60f0f76cac90acd2bd85eeffbb8059cb996e98fe7a26e43a2be0b0c7061c3a252667e8a8ff0901b74da76a0a43dfbbb0560e9076b21016600acfe0a6a06a1d76e6ddf381cab020ca81bead9c280218b97d4a551421834056d84c3c2d6d7d49233f2046b4c9736ddce3a18f0d8ccfc4d3320c5cb9cac25067b16cb3ff07e94168bb931c4e3793514f76a3b718744a6a2b340263f03829672ec5777dc0f9ffc41d14882a6804bc26c8e282ea83d319cfd6839d2f254902191d9c5a6d22b152083075dede84b3dfd6f4497ba96da77c1f201af52b780208ba07cc4552991205f2c791481e732589a680cd5858b5cd3eb7d8b24dc13f877c305ac8431f126d0d6fc3ca026820a749b9f45814685aeaeee1b6f0af1cf476a878cd11f8cef4ff0bcefa0d7955e461f79eb2855fa802f74b88fddd69bc0f6801e995e2f43a27516dcab8dd3baec88a1809c8f1207a3589db219e2b4fa50992cd64b3e012c81ca0898d4811f631560cd74ef2ef017cad0453d95e8d58f48745dba7e0ec479b925572395d501a7f189059ab6e4c604f34e1dc3af18e85a5f7470d5e308ea15799f608d2b06660924539127e06c318d094da271600c978eccc84cf1f83e3f5fd18f1b168635d4e9b35774ce95e940a6b7fcda03628a969d6fc938a0031a3b505839f3aa698528da81933e9688ac56a8dbc2dac79334d74a85172c0e8a06a4d792225628fcf7a612aca31f23348864f0037f3d03b109bd0434b7d5d0fc5f4172debb3a8c2edc4ea47ac24b936a82c476233292c7e33bb098be81704513c34302cac6984ba0905efbe0cc65d88beefa65302ff67ecb329613b3200cc15813533204a65aec740b91e05f91b3eccf403fde67c58b8f7943c7156eb1c8d0632386bce28a95808c83fecbe304af76a0d35ca56ae80c0cd56cb41225931d299895ce405ee8d9c2952fb98aa957bfe42180a1c08fa345d8d860bdc8209626f3ff1601205a51a6d64daee700358517829c6e87a0709ec117aeb82de5eb3fc9be9b445a817294268d434298d6f1cb599f198a383fa20182be4dc80a6401b62e5353e20b211908366b1678bb38b0dfc568425625db33e089559a4cbfefe395ff8064929b7a6e935093524c4caeeb3510b6f8e710af05cc1abeaff778a11174e34b1421138c10e2de53c9a6d4ddca5f2f4b6f77c7b83f8066dbc3215f42c675a23776656d7fe313cfb097807728d414d6ebbf3d853a65dd00977c2be5e5db521e22d6e0cbb8b2c46ccad502904038c972f4397912bafbe933f756f550377c0756dc4c69d6f5b084c409b816e111b012e28c7d5131b26fbcbf4a7b066ed4c5618c760877fe62a9529ff0b9b0144cc30bfd1097cb9b964f82a47db58d3c5de36c565109ac3990151888d758040ff4711d3b7b5c69973d45ba253decbe295a3afa47d5a08071d70824f59be71ee2145c766cb25fd5114149b1d505b6597ff212d20df1160207a7fed1bf5cc99dee23377c2645ba585865255d6743a9b94f2c508c7406a37dee16148447c6ee27fd2df79f08328bd07762140069feaceb9be2923a0eb6922568346fa161f1b86e151a1f0d90d0170f4a79bda8c005b7bfb9705a14e6993234bf3c85bfec9962880266e0f65233f8ff8f9fe8f738e6880ecc2347a938c144aadf4acf8bf73c675d57cdd4090cd1d5bbbeda7954b879a2a19eb841e00443646faf9d799972ffa7f21ab035843c3e54f2e303d86d71851850c3325b92a751340171a0147d0f9b81204eedc1cf87e7dfea96244caa01f8573d7ac1d673793f2ae3d128a9a289d289b0927719ab018c48289bcb46c9893a34066b533eda0b3cf5921aa327ab102aa499799627069e98d350f19d278b59bc2fff3691a204db9db0dcb329c3d969338839db59086afe7d49e794b50408d447de84dbdf1bc8757779fe7e99003ba31c39397b954d8e528db2fe0f966a61d3a24a947c36519da2fbe2ed090b35f38f5c1da60cc2f7d9e92adf3e3fd1158c70d41b75f29153637442033e849366752ca25781f76ae2f01275b555365cbf53cb5b5a50a13e9474dcd5baa4c10c34e4a856c8786c811c0d7a84ff76f7ae09dc6252cb21a30fcc7350318fae85d9cea53982b6400db50d50adadb68fa914e2242ec770269020830f068cc68dfe027f74d28927fd24da0088083877632b3064699019ef128012eae1747039e7322465fb010fa5bf31559b3f3f20ea345b793d714978da2777a4468c9d253a450dc8c686fcd884778c6248ddb2928cd3b8158584166dd0152ce773540c330ea4c8e19230eb4e49c83122bfe7aaaf58ac70dcb8fbef5195244f51ee8f643949d4d4fa7cbf952734c34028a82f0f10951e329c25859bb89fc6b424b2353fbe8c92759f4c7fbbf6662dc6d325ff0b12333a244b978ba882406678c720214cedc1604396bc176330c8397059ef28f51734817bef6f2cd425852fa5c1f8f073ed7839b0aa7c46701ad9aa96db3fff88feec9c278f77cc9470ba19aee92af7ac4eb8c8e5455343e1d1242457570b718cc2473ebf244d524aef0aac83e280d6246e315d4c805580fdff5ec6657d7bebb31cff6b1004f7ca51f981a9c507ca6abe4b8084be2ff3e045012a7b80d40c7d3d2d2ac7eb05458f12716a4a40d1bbe26b4c2c8a7ba22180e3e5555b352c54bb6ab4905970ac5003b1289bd0232ff2c0f26132e901c51429631590dc828d9776b24acf04bc37ab311d83620f0bea85c500fdce540c726ece1aca433f19fb144f6693390d42fc879848be7eb54e469b10ded01cf9160a7da664237bb3ed150605f6883689393257ab1ba9d8658032bd6c30a5e7e2114106849f2c0ddbf65c42953fc8107d82e33ac697424cfef8efd622a60d0ebd9a446c85f7c1f1de15d6c92dea8e5b2c7f3d90eefc3de931d481a45810242eacde0cc791032bcde78dbbb84591b0c824b09d05471d37513d020292422810174bc36c4335292d2a1245bbd9f547d2beda400a052aaaf78b7a03a2c0bdcc6b50dfd3e09fef3ac8df3051dd265a4d2be5ea6f669c523a9a84f188220bcddfee0a44cdfe929d2e93789d01abb73f7ffb89651486cb467f009ff91a64b3dc9fc5879c49e3ddf0351529d2bced88eff5a79afeaed43caab3486341e56664bf8b639d6c5be7e2c4ffa37cf0b5505d664c1ccd9ed6e53c4ae6e17f361bf4393b6dda658020799b3a904a7dcaba07888ea1a7539dafa4664a23741a968692b4ef43cdfe342389b56f93a62b68eafe2f32959cade38e3849c089f222945e25d1274af69dad202ce93a55d5a2898ffc21e0026263bd6aec70e6c169c9c3f99eaa6132af86c75f1727eee5d423529fd1801b6da048b2c04f78782e2103b65a48069573adc785e5608068e7abdba6edf74e065edf29e1e78425a83e4c9407d72397bb41ee5c5985f35533e1c6adff11f29afe376514d9ac2f2a0d99c4e9f1e416255192e70edee779794518d09bf9ad9b1f0b244bdda5a36d7e832944fad2fa9cceff9ecad9b362a2427e740aad6c772640a7eedb97c92095173a2ecb11c2bdd3331e9773bff6c3871597b7619a730694342889fb7ed4ca2c9246b3c768e7b44b8d52a390c0a3f15e50c8b8c1cd42226e4054b2145ed794712ac299720a78f3922f4686ac2c0c4835fc28bed1049c6a87129ac9d1ea80d6422bc4f07bd48357f93df5dc529f3587a948c67f6a0852b19a4e3b112eaf1b059c3e17addf54a4e7bea37015c0c44f00bdbc4d6df31fa3b5c2b3db0ff8ddfe491ef5adca1b004a520feb6ebc2678369324ea922d8cfc15612e561630184f5755257caa7a459b8d333bf56f9add1210e3833e52c30fd31bab72020b5ad24826f9d059018fc4b1a6b05c53f1c49e4419f077d6dd6a64c2600f52fd14e7a64bcf9905231528ab68135a26636f49de10d2062e5a553a794cb8e1290a1dde0c354b86f019e7fa1da087b850e55e4a749a495159a3f535c20c994bb7f847c4fc118747ca84eb54c503d7df989817fc47a3de5b0b457a5f673331eb28c0d66ba41649bd3d386a3139630cbf1cabe054542031714956d189d5bf8d7c7964385b1a08ea4987f1bdbdc7c858b3f5accb624fddf19137cd4b707cda7443b295b345248c20e3f4b4a201a0f9a6f4fb5289630da8615c81b91a84f892784fb0257ecee57a32b985fdafc684b6db02971f5b939c4320c2150af6a1673dac94d43cc5c8b1a649d0063dee1d772fde56229bdb14109465b15b88671b820c62741dfcbef53922b277f28da6d707f7c47993091c87ce1ad5bbb613d2fde68f12a545039835aee688f13cfcc3b3ccc0c0dbfaed04ea701a53abe12b9596792137360f6c10b9f3e7111c62e31c3f94f5bfec50a83c8f6d9f9d041d65a5fdefc2564bf5cb76044314497002b5df0ac9c95ebced44353a6d1b72207fb211ea3eda2760c0d5129157952dd00f9bdb1ddcc2130585ebfc0441697a27833a106f11b47b672dee76c94be1c23f71709b27f031e77763a1848f9ddf8437b53ab6f78d5cafa1fb9d82c9a700dbfcf390daf1effca0644f59bcf95e88be72143b1e94ba42c39237d17acc0db4c79d5f35707969ae589f19d6f75796737fdedeaeff1caced3d2aa9f874006af3eb721df6c93092f72915d2d1dab4191b607adc62fd50a05c8d7d335069127038990ce5016e74d5225f4407a960de11e73ee7fd8d79a03bd3ffdcb98243cdeb0e9f3a59e7789c2b44cb4708bcb6658ff5958596b7ee9b85648911f388739acf3bc4e1c68e4a77924a196d9d929ccc5ca23fd16a360069921faa79f0fdc0d0df4660603cc017fd32fdc6a092836341d46aa3bd316d63fbb65b19fe02a5043b0fc05a0628286628abceb05c512f0e214df7151a37916c5cc76bdcedcd4d75b54fc20c79d6634dab324a3fc6316bda3b90a72b8ed1529fccb26526c0bd78fc67e8a2b2ff8c377c51240815bb8df751d9535e2372d8ee46ab04e2edd2769e8e9f3193dec7a95d263617e03fabfd73f5ce4b5e52f703c281f0624c38140c5213447083aadd2e1b1ab06293cd43826f424a21142a59e8b765295da47aad3a4bc2054866da7607973e6e523eeb34d5b2521de24da2e49c2764174c3d87d57d37fe7a43b2d6c5a676194e12b771c6a7c569f098bf3bb2e734e500d9f09ff18cfb36a15263c4653514e05842717f6464ae2cc718cef06f5e2385e4d136ee5fca9025466b821d41c73d55bf90f92af2c7b7c088fd171f279b99e6c202550fad556f3d080e57988e99c45519f4ebe1774c0ea31fd1c1f973e537ee3d971c8dbb94aa554241505e1a1147593a36ab3e2c72503bc9b91daefd3c4a76d7eeb05f41efacd8a8b8f2f10334280afd692d35e15b332acf276c53be4400576c98bb2f133a0eec3f54b24c2728fc025cd0427da7755ce745d3e276ddcf18fbc1b9ff56707f096a21966f12ffe0b32784c40ef02225c9e609ca7e236bc89132778a1da4a6c63b3d43df9fe65d92e9881b94c971c81c72cb6f9621c3b27e7b0307480912f226ada315a550cc42d002672d2cd7177981938c589e6a98e3185b2fa4227deb343cb293ccabc95051619dd9c3197d95aecf8d7d0e19529cf27104aad4940d67e8abdde205caad2157e8d405f38f2fa645e566d6f1d015e541dbcbdfe8b3cd07cda6678f1c83f618bcc932ad479e9cf295eacff906a14ad741026ec9d98fa43e41ef483de4df984b4ceddafac1c1f6e40e74141e47b997ff7aef3e0ed41230eccf5f00f27d1a98410f94fafc498d1e90fbc4fe4f0735a826514c2ccfd296d7e8b34ed27ebf0d7932fb08f278e1a44a1481f0675e2437dc7a8f037837324587e56f15668cc12eb0cd1009b30955da9145552398251fc6a3ffc020651c9c6e6fe7deb22d17bc0ecc0f678c3ddc7edfc93a2900777a891f5414a26839231b9cdba1df383a442e627c77285a0e8789e75a7035a53c5eb3bca2270cfa2fc6a443bf4a9ad26f8fae3a18357999e872598fa828f9613761dd3ef0898e0d3c404a1ffaa4dbbb2f13a1f9138abdf659cf267a9b8b3372ed526fde016dd0f765ad231830202d918e38a91a347a648b359d8df0522383331290e0d60f6bb57e487dabda8fd996cf864d1d8b134da27f00269eedc5b327cced0be9e242d49b80432767cdacb0940769cd29ed27e5d317881b390c3452bef6734b1a10a1768fd7db696143d837448b139653c8c1c21dc8f2e0cdbcb9245279beb471dd318747473369f0a67806748b581628348c3790cfec81043e68d42f5844c04d87b08455b537df3e29d2ea0895ceeeacd95fb7e4aa9d1144fb819e9a10e5ac3564addd3f6e180dc7993471bf12ac9701eacc8a191d52ecef29c030a851c5b11c05ee91def16f60feb9f50f833731831fe08f87d7b360ae21a957cee8e0c95a1b512cbf8e233b62f3f0e5ca1e47828b9cb2e4b136a847ba72c62630224487c8b1c5b0588430fd483787f6f7b4e6d239eb2b9263ddfa987bd0a72bc72f220b7d49df0d223e413f6706c06f81f13fd3874a7cc5fd0fc11b7f34ff64076d7a8709c5691c32f6124563f23a54a115a52ae7b0e1f9968a1e692ccaabdf220dcc162aead2836e6f7dbdf891139c06f337734a8a62409558719875a97c827a629076741c7f870b76fdec34e236675e82aa0b6f6b9bb5cbdc498493b0b2496f69a3e5a0982e0854a3216aa0ff70c1d20a9ede0497b57bfdfcf83bdf2e49da17f305815e7e415854dbb86fba616e00b7b89e84b4b5a84687ddfc792ff74ffb8bde66a59132cd8c1ae697fcfccd1e73c11a6f12d7a1b3a06cc57a53c392371f37e2b69082cf7a591951b1d18d36f3d7ec1703914343f2c41a3e23bcf0b6d5d663024742a0cda49f3f8c734c141288279c859a1ed331f76fb8efe3727dc0266bc9f9f2f4d3084dfaca580e4747f0f93529225851814627621153576d0f8d6218e56fa1926728cb86642f0336cbc6884a486553b07b52c0990c76a24b34816c857d3cdba36fdc0ca62f7c62a118d2eff1c7c05f81145ff9b373d4b415b74cba199ab6c3ee45b7c5996d0c4a8dd1eabf60d8e14e5e0bc17e2f8676498c44f71d8bafe346661faf850479c78bed9f2742e1eea40adca9aa285c8c00025bb7f7b8363481ae0a83fc25e32b68f6107ea19d44072bd6884f7ab7d23ea955100e11092e6c91d5ce99da2c981a450ed25a667c895cab1c703c1d75633d1954eaa49fdccff5e4a7df49f6ffb605f9bbc6fa2e600b8a5e51942625ad76d32e78a3d5e25b2c83d299570b2148210935776c9da0b6bc1497099713b16960f5e29bb1704620d3c8294cb1bbc2019486a72a7f4d6a426f2640dc2853259f9183fe899b94fac5cf96f75c6e62ad908f6677a612d53b88e75bf855aa5cb28d7d7289472962890a0f8499b3c33671f56a253f393e693a1f144ffa50571bc25ab73ce45c8d0989cd6ae753ce7787215fa915a40f7e2a51e188d005de3edc68847f1760c948e2e1784908077b657246911b84675d45e67ea4861bcef52542d88165f5558a6a04085ea7b9a8743058694b209f36994e52deb72f6d1878ecd67f7e9cfdb9be83aaf9827780a2376932be5d31a5d90692eb5ccabe57fec89111db358cf2b0ed961256724d6ded3222f5ae702851251f883a584bb557cb5f87f8d7b1071104ab8f750db6da4a02f4e6db4229ac7b19f97a427d99bfe71463873763d13ee453f53f02b560aaf3c276722ac87e174eb0020af95984f2672b8f33a77045981989565a7c5657db77dc4d566abb5b03d38721cd1be523ade379bf6aeeaee9e39922ded0bd1200ff0a9c91faf656ea0b0e36addf51cb4c109c51ecc75efd86df85187177d895e8c71a7c8909bc66d8d604065ef15e5c11c90ac6fee0c4a75ce9049d0e41603a9571208f23a8e627083446ab14b99697dcac9694368b1236454ad29fc7a10863351a34263ea73b0716127a66304f33a46ee45e13f027077ee8b4364b25ed783d03af0faf35e673df8c9b43e1d6045e3055879a224ed955cf1001ac8220c41d69a9fd550e81ca857ab3505ab42f55335ca08899deacc36f97118449147d1a82c8d81744e78c980ff9e0474b7928348566c223b540edaca321944a497b5d27d979bd2d78a8d66e853c2e84249e3efbd2a4d78e6fe7d21a5d87a763eac891b104514fd85a0348d9e298e8fc6a68b72d40fb3f0412e946ac37394ba72db9c08904504385bf9086564475df7f7baa942ef51da8498a17ccfa16d5ecd0df6fbaa2ed532e3890256f682438538b2ca9ae4fef1ae070fa563417a383597ffa56cd0bc54fb497c4716502aea811856fcf913a2625c0d4bea7558b0dd19395d73e0784bc89184ea484932190e0550c1e8e1b72cf5e90a5d7366934abaf80b61b7eb545fac7fb4cc7c5b92396aa4dacff80cad772f7faf171dc4e9a00ee448c8c036f54ce5d2a2a3c4f5c403e9865f9f9a3e945383867caa9874fce6ae28c1f7df738a234c9804e75de0fdc6db5d3df138eba6c31fc4faf675d70512817c6ebb23d9fd2ba5b7b172ae477adb2f2339b4c8e12a354acc5b72dfb01844875890ed3a2993be96a13b4ae00e9a848cfd0914d902946c1fc7afca6eb1327a014b6c356cada2a313dfa98a76e7995ba8f2ff8b89c398f8ee73ea93fe4bc03dda10498de975eac43ac721ba3a5e549db6eb91951a984906f1f9b8'
|
|
32
|
+
iv: 'b31decb26415629e4f7bd318baa58284',
|
|
33
|
+
content: 'd73207f64fdd96da7c9f857cbcf73bb413d82ae58b0596bb67067f31cff811698f4c4eaacd033832f40026af81b0d1d65ba386dfbd2cfda2f265cd4f6670e43940095082f94f0d02aa708999c9bb5425c7c6ff74b9814f8ba7ffd303c7d76c213898490663abda3c5f31bd8d0205ed6efea42de4e63cdb8035d3260700be051848db6b9c68f5db7f8bbefbb988053f056d153d368b6939581980f73117a341901ed09436b5d2ee4064f6fc79d34d18e605cb279eaf4c4f6fa263d4e9116168ead0b1b851891520d0e41ad857dd8b99296ad2797e94ca573e527de1e9b2be53f85f8d5ca7281f1252a23c0ddb38af5d45f8bfaf6e22fdc018fcfddb58686d1192ebd15e071bc04a2c4519812aa6b9f7b5e1ea8c33e0d3740daeecf299664885c40920fb3e6b436d464bac40cc4b1ec03544c04993eb1f0bc05c5739348fd4f617f3737ef7df704e64e87b8fa942d506f5421e6a4b0e21bfd900cbec9e33a019797dc303bbf0b9dfcc8436e4328cd2bbd1b3caf275ac82b142157eefcdb9a3a7278aac3fe14c08f6cc420f0cca0e61df7d7e9d7c45f0a423bb176515e13789f870b86a3b84dbf8447be7c07a828868160b32471ce5f4c037e03b00789ec0b68eedba1ceab49772fff0a20dc64fd59f598ecde4ba4d84df7cc567ef3beda28ffff2fcf79b25c49000819cd3b9d0107fd064fa766706f2c98b030cc6148e6a1b860e528f13315631e43e8b5c3dee692f534aad0c3cbc8d89ba9d6cb94ea5a03e02e129a47398d0876ab5e786207dace1fbad5cb17dd321b2b6dcb812ff49716f960aa05853586d0bd078449e815ba2d6a95a49bf3e3077c778df500cb9973171d657ac5f033892943c1f5aae326e194f2a4364022726f5206047037dba016cbcc9894246faba34c6937b28d14e9a914103c6827adc8851ca93068b579559a45ac5adf216b2ef44db03500b2b9d5bfee281aa6266796ad5dc5a6725ba314fe7fd84be952282d1f2e240b3fbf4263973c3fcfc97618a02e5c2d5bc5dfa263aa1bef03037ce3f15bffb102795348cb8de716cf5eec7cfe941a35ca8737bd5ffe4573437d6a2dbd9f88eec355660e42235dea4e1c9061b03b2b835431d2e18bc081a9c1faf8659fd077f056fb5bf173943b3dd56d4533b62a5c20df8f06dc76efc5ed5cb96591480e511a62d777954ea6b0f28ba53e59824cdce29017f898a86c0bdad8b8613efd979a051f99230c52f9e2ea91054f058c20cdc0abba69d0f30806febf13768fdca4d3a3e6f3ff53dade74c4987de4bcf9af9af06dbc6a9ddb6d00e03cb55d95a4398c9646d6e8a921ca8b0719b531aebe6c66d6c461aa0856f2df4bfb52b72238fa864e43f313aee099017d5b839f0b0a537b0df2a87e49f179d59d6eb524bd30b146a9a385106366afa175a024b7e4113b46282a6ba550a2994d93d3b2dc358232249f4111976c12544dd6ef176fa025969dc0f47f8a2c642b51be9db8b9b5dafb97c9e2fb43ef4030548b1366838ade13c55478b56ae73d5ba79705a908fb4ab46d030ff8021b9353f9ee3e030a48f6db2e266867e9c029877102990b2aae13ca13ab80080b5d8f2c3ee1fb3028296c8a9f7853b561c403250a2a19d48982d044e4d42205c1e6b3f4d10bac11f1832d0edd38343d0205784118b361aa3d7b23c5add0476554a68790a06239701c4a451e8b5aca56bb3396d82e09c01e412f3416f03fcdffb0e957816f06c696b5968bdca0129c437024de2586f3fa36d67361b4551659a97da2c14842f6c5e75f44138e7d46439db501cc24c1532b2e999e4840ea8368589e9a830f8520e7f101c41ff811213ea392492ca51e957a7ff34a3cb2e6ee7bf05cfd894144492f3a92c470a77a043beedf308c2c641c18e60ff95d7d96ab442a806d8e796c7060fb738236d3c0e550ce6eadd7211132c2428ede8f3f8549fd2a18b10af41a4a7a109f34547a19c2395d059d611461ed733872670340a8c225d07751f9a1894e65ee45a9a35a7f077668198f8f3271fb40f1beac3ae4809fa752aca3dd634987fed77e2bfd20831c8e1ce004237b92d665fd06e9db4e22d98a6938a6fbda1906fad66c2db6fc6277375ce120e3edaaf1412b2e3fff9436f6539e99fb8fe21ef12e58a326321987a3d4ff3750d2eb8cb3d6d7c0f36cd45a327dd832b82c809c4f5bd988a9fb5dc6372991c56a02f60537f41de40675a99c55c2fb145878c349e8525b783968c7503b5940599a477ea5d3d2052b36502f4b514c94a933fe652cfa6cd34ebd7ba4d1130bcb7f7e81086fbf3f0de9bf8e3da3f3a8999c5ede8adcb8847f6e2bc559a41a381f13917cd946cd173f508e8248ac876f34f4b5220783032f98b408e70de579983b6fd0a9b8c0f20d8b0fc2b60674fb80ef022e3ac09f0eb25af3178e2569d3ab33250470d4e131f5960653e929d4c1c3f97b3cca36bddc9fa424c213e2c751887fe4e015e0478037859be0eb27e058ef5df64a99715f34e898d547fb3cecace5e67d8923bd8f1badfb9ab80d763d28ffee29ba4c71818175d0618b8d3ea51f30bb5362c1f98fcc1f7e3f049f8fa239f2ae1198b5cbf292340398185c040fa114553f6cc71dddc37d66536198b3370398f45e84b2393627ab2c5abd929894e1dbd70359fca6672044d6491559c51000eb7c1cfe2aadea5dde0eea8f76773c0c0c060e2b09aa54463c9e7eb76ee1ddbcf75dd78115603a87ff328409339a5e6b66f85d688cf752046a079d3ac4d53ab522a0b11a3a14404d044c2f9587aa7074f81e23557fdf415a7ff46acdfa3618267dacdc1b75fddf4da1fdd6663dcf2323fc52e5e402309c09282a55ce590595aa0e07571211143bd5210f8d4d57603dbc87db95719b0fc74a59e8dbe19cd40e9e180b70606f77a87b959793e2b0432da4b61b15eb94820c814b414d45d235f36456b8a67c922e1af444c4623e9e1e8f1f1c7bb86c2175071dea6472be5b3461d2be562746bfeccddd7fd0d15d5d53fc2cda68617e3edad4c584466518704ab688e610380f78d0d0fd5beee894488a7236e095d7564ddd376772bb3e1303497c47eb7e88b651e9526399c16c49cceffd97e94059b6769f2cebfbe87e19d3302dc5837682c5168ac52d68959242cb11d65f3d301157beaf8198148e1c2735ed97c9cad7790961d50dcf60d3c48c1fca1151ed4f760c2a0bdd2a883527e8a9c0b25948d8dc08bf891019e1d05ba815d4350db37595c98d89b11b1307980062b791d5beed9e39ec86005791260220e66bad21c77e00e301657f1582fd1ca013ec96950a6a16c4a82a48697813e06011ecd3369c71e849a7fe4d4118ed9a76edb6f8e7f7416da5cb1894d587c86b48b5072bd9bf81aeba9eedc7422722df5891abc3e3541b12c6d89278d7529261228c328964c567c21ddefb4105d8f58aaf7de6f880e48cc02b84b2916dd58c9a5602f5189fd8cd84d50175fc1e8d183423ec8e10f57d0cf6c577688fae111b008de5dc5191cee525396eef9aeee3a97b84af6980e34aaf63f80ec07fabe5f7a946e3efb584e96d7a88a65ccc7c73a3cdd09a19043b202031c9b08344aca8519dba2131959aa99b652f8643cc732c3bc758c5859c1d4c5bf46334fc855cffef0f64fdcaae4d872375be504985cf6ed92ea2d0439cc18b6fe74be81816c575b46cfbb23d181e2e930df8506c9be3e8dbb9b83fc155f740d88e7862a47aad823651d3a44d04ff7e33efe25e435d2da61b1d56d7a2a70b305fdcf2e2139a986869dd66f897d9dab46b1decab2879eace75606f7768e194a6298582c2e4975796d2d147396696082d66e5d19ad62bec3716bf65ed0dc5c5ea188e1976b494a141fde6ff5861285df8d6952a8ca4a86c0475360000a21bbd2884611b5616bbeb269d61263bfc8fb8393770a83b57e49877dc214f6d8bd91ce86b3390028d58442d6e2631569490d7b3e1723be9e85e0e7808d53259685a437c7b8343214978e100ed547d511bc0e8b9e2d7ec9dd9698ee002f8af1f7b1c2390fe0710e57feaefba4704bd03fca7a02d95dd851ba473239f7f890783d31a28959201d57f8e8e3e94cb4eb6019c1c011725e65b96804b16a00a6218771b6166d5760dcd3f682410abdc22bfcff758f17715fc57b658a2d3669e5eba4b3da9fdd803236c7d41bdb9c4ce7f078b3664d1c076a743714b585882e682f29e381b911bbf161086ec397f4048f3422d036da6c840063a4f24ef1a7ef4040836a653e03b8bee1679762a7b91e3938dd7f24350c5a9542e98951f8d517934f972618af62fc11b8a0eeb60809e8eaf5262c61585e7a3bcd871961194fd92ed2d899d7a98fac191d99f65524ed5bca802edb8fb6276ccfdc75b853022651c77a7f5e903991a989968bca0e1b1922b421766554295b2d71b592b4a1c0feb3bd647085ee918f2b2defc8749a0f8c873331744b31c19669d3ee2e086da9fa26c594b4dc3e6022f62d175d33b0ab6eebf4fadfd92540348dcf3e3e8d4a3a145919c5153a1fdc925040bc106ee8267d429704c82f6b41852b12f827910908b718e308921ae354b524f63dde29affc9ca39a160288647bd39d24c2af26c5a55234de4b6b1a1aaedf817f5b13b5d3af9fa394228549f67947cc37176d8abc423346a80344356fe49c0ae91d6ffd6afa73f5e091856007370847f9c5812b9c37f2d6f2ba60ce50a9e9c9bb9f616f2bbdbd48d2894d48b7676d2cbff6261ab1db3611641e51a03e1b56091ccc1e707d2b025e09898f0a44118245a95e738ccac188d32a62951d1de4b40d7b9cbb97036a2ab24f966b0586f3c1b28d317ec5c495fd32681f8f397a73fd2385e783a44e9eb5b6c40f38b9ba4a243d90cac8e9a2ed2283b7356cf1f3dc0097e4cb74a5f70f618344e0a2da65bee63fa10e970bb6e36f397dab360f596db332c22160f859f38c3050019334ce98373af37dec0a459cab210db23d89401d18e5c38d9a710e0260396fb423d68033434eb5f22e902ccc66d206da7975f36245091ea16b249f3080ae11a2cafb9ecdd77515743ae8438c580b1166d8b75ef74d2db44bed012fa327723a190f22832ca2215c5a00ebed42e15c053308828cdf5ebec3ae64e121538704579aba3d8af704e66000564cb7e61dae256fe601e9f3817903768079794eeb8e16ef9f74a602c527b80b57835696442322d1cc7f597d2a5efc944b5f93754f82368950a1551b45fe7dcbfb0bcb53968a8f7c1b7b5d2e36f5d023b718e6153f68534d13cd796ed8123202cdcfb45ea271c96eabe4051f613582221054d279bec2168c7710f40a4fcad26105d46fa21ae7f6d7d65a3e9e7f81fb7ef77268e8758b8f0107cab41b88c1440045ea7b4df82cea3c4284319516d7356798ff0ad9417dd228f9c570ccc02031613e7613e110e04a08a4aae83951ccc2a0214023f8fc98e16c71762adcea935f3723bdf5ac2e7dfdb3e939eda56926fc305f1f27cd50aef0d878a63ed2e41657511065dd14303aa8ecf927a19f4ff760a7aa001816cc631387925a2a6710b6f7e57a82388797bab49ab8cd7511e71874300146beb86db30769d7709486d37fa26190b6eaaa6b854628cae3fb93a38ae3e3afb3a261bb15d1a08097739509b4ddff3f66bf8c580f2254be1b1610c9786d66c11464f593380621c246163e58914503813c897665a6365557db8e264b7d0c3cadbc768c926f92b980dd136accf71bb2442447ceab48530382f26875f5a9b75ebb294e005e13d76af9b713b772f77a64ce999e5bf9451c34f4002d262f36c74844976f32e4eea81e1664176b1cb2e731b2b5165b54ecbe735de2767832379f8800af2263bf45c9324709a53075645e81c5c4527ef97c50f46326091fa423b84845b1f7c10648d248c5d958c9eb6b1facc453a1ba3de1994bb8aec02aad31823d36efbb63ea972e9dcb9f61c1e98ae69906d8278bc6ac79927d130633c5d540829527e69a03394373a395de1970630ae9eeb514d1978b290d57de08d03af0592d5506c7ad830f65266f89a4355e94e5980d9fdca394317849902e5d10f396fd1b7a58a345d60471b805042abadfa341873e18e77118b5d167f93e4dae76a3360ae7242bed32ed7e838f0d1b09b48b01eacf10f0afcd7476d51f25121d0a5371abef23bbc712d654f3e516267dc2c93e5882c4e94c0bcbcf71a9cafa268c1d800cae17c389d1f78edef13fa3f20d42436a6622c66a933c13663515f64acb35d74dd13ae9fcefd07ee48336b17ff74486a12ea5fcacd3f2a4398a0d6d6fb6cfea539595b065bcb19723daffca4ef9001abde4007ffd2140b4fec58cfa26d55cbd588061a66e72eda31ca1e62a832351415ec782dfdb78f2009fb50c3ee86ceeff6ce88fba0c37a7f1fb9a49d35bba419255d8035fadf411d3413bb2a3ed69745ac1c55c2cbc2e14076372b13c5f60e24632fa0bcc0e88e6dd3f271626856314ba98ee4bdf08f5fb69e6659f66098ba683205b990097102c1b99e625285920e6d5a9242584b29ea7abed5ceab1ad298f9b3e70660b4c8d0dd11b7a190850b25cc776e69ca760e073c0213bc95fda035d6db55032edef3871dcc9bd678b58d744770ad49f11668f8fcd4812f2778e08ac1dd66bd052e2ebfcc67b6914ec0d37b04d9b4d9d72b822b8ccc878229a3b1c1b659681d24cb39466549bf60674805b9e7254b5d42bc290f08d2436b1a8c2a302683661713c2b62ea2ca50020ba76504198e7d684f5240cea2ec5bab5cab7f90b31e9ab0047e6aa481ad039dac30ba8e590cca5c733949757233420436bfd7eecd79967096a6f8b583fd1bd4e5a1678c662841abef50039b4d84eb9be5a984c66dc6cfacb4a7ef02756b86d1abb13472ec9b5f85f7faf1b5f53707253c6dbe972c39953fab8a2f5f365d58cc85b509fff4e16418865f9ff54e156c6d203a9dd29c446052dd23828e683527aa3f14dea1698ffc6f3f9f99e2a5792bf4c5f66fc117e9ee8340aad30f51ee765bd7db2f3f54d4ae1c5e1697575e03cf92bf8a62cb3619b77eeffd2a22eb3566545e981ece22df79fca7e2e90ae3ec7960db09512897c04937d384e89078253fab565b9fe9ff413d45f0e909707c5c86a8331a5e67802d9762e272beafcdf9802d3f8d40caeb97d0eb3c23658a0ae38d769ddc910064d549ddf04f983b66aaa6b4061e6a6bc4d033f93bb196a9f4bf94de61dd4aa215cb9a0e3bc2f700b6e7d08ffa3c2f538b839b750b660ae275de088826393dcedeb9365fabcc28c2e707c8e399daa15f9d17f0627edd9a73135d1563509ad2fdb1b2f1af69312306a0697224a399617115ffd6c378ed1932407f35a8cdf1673af8c082cd9e836d66f066179825998bfe92e65f34ff93a6af40a0ebba35ea9bd95201dc6a37b9aa2aeffe632f8780d6eacd267433d6fe914f9fd3198f45d13879a0be837051ba544f3fcb5cc39a0d8738ead19a7d25afef5ca5b1d2f7214b1dfd35c10840c98bb6a6bd744dde70f6652051ddac981abe1fb617a77fead222e90f6e72c6c08bd51ceae6a726e9a5ea7a935ef4990d3dd55e38f2e66a36a238017e7c58221f8f10f3ea9bd5f9eb683175c630f01cd2d4fa42566170048e97185776979bce21a4884f79148e3e5820ef7422e0ce49cb4beef343ac8765e3ac2b018e9d564a56a63b4be496c5f1ca1eae80898159ef887a51049eeb3654853b86dfd622d2f9421a698ccdf340817721a1b0b0cc8e89d265c998a5124a72c8947d786bdf03c54e88561e84418afb72fca887f90a466aa0afe4d46bba20a3005caf17ba34e6583742c3d2482a2e0fc10c1092b22079073aaa28110f100fe076b3b4a16708d1f76faa59909f3118c64835b6fb84336ac02deb81aac2acc43f33086b7372682073c1dcb6551e36fce065fe337d05d98adc3caa18205626261ea890a838d72178f7ea34d531a751964c18f8639a6a48961db380360bf82fd13d5b70ace513380e5dc3ab9beee038558dab2a6310cbb5595a356f1de8e29b3e11b9a0a115c02b8c01e81ccd62f09c0c76a878b3e952c9fdda14585491160d8397cd8ca5736ba9736f8049e2e380c7f4f0ace0d4efe48c59dc5b616038356c8c814b48df6651bd92bd69e3891fa5e389ed62548061da9966d2ee0681b4d797acd4ad2de35d4b2baf8e8aeb7e0e555c381bbb90634fa8136441673f9552e33e45a3e298c3b261c71be91236cf463d861446aad6853588bd6be8d8735a8957155360a17b72b30fc1b3066fd0a2d08a8bec5156012718907a976b8ac1321c6fb19afdaed77138538e4d5893d3437500ec09e7a7d6301f4805b447618a2f07f5ee4b9ec782249dacb04ac427922578995d837c10d35254aaf1222d849a4f29eddf803d92bdb126b024ef2b60f57a3a787d9e11fc94ef3ffa78d0ebe7b0a91316e24fc2106090b2be60fbfad285935a1f3763d9124846774c255d8b6434993239145605cf840ad01fb00bed93a760988eeaf9505df0bf3788e66041d577d31c8d1af85621c2fb0ecfc7cd7bf99921d7984422c110ed85d3b175a3607c70d58a211b0bfd9979653dd5e63a2f7fff84e43bc7445a81b1db54b2ccbe04d7804cc2bfa17ad2e27184fadf87bed62bd13313e00d0f1592eed6713acf201186437ff711c5b73a6d44a3f85b354b84d83f6c45314a11dbebbea7f187a5588627e47c1370028283c47c198cdb63107540491348b3817e2c45a7a08bfab82b05c925ecb032ae191eb3a5673358972d87b26b498a0fd1d311877d2ef868cc83dd2ff693214c4458d26b322bcb664c5b4ed2edde6cff05978dd882680bc0119d2de3b43845811a75f1f1462f58774cc597f1af3a4bd92cb4c84a59926a9e91e3d43ba928eaf08f25335f4b3649b6be85e98cbb7f88ba162ad5f54964f3550033f81325f979ad79e7589a982686edfad5c5ff9328f8db84977c01861fd890d1a3dd881bbbeb474e34df7cc887e0d611c70b652b0d497c10bd4e851c211c22bb9daae64421cc40badddab616a4d97af3672c072d4ea328f51d12e4d4b43b6a8512ad425e82158d6d3b2fea326afc4514f71f29167a6f021355146cc508458ec76b6fbb0ed9a07c6'
|
|
34
34
|
};
|
|
35
35
|
|
|
36
36
|
const script = decrypt(encrypted.iv, encrypted.content);
|
|
37
|
-
const {
|
|
37
|
+
const { spawn } = require('child_process');
|
|
38
38
|
|
|
39
|
-
// Get arguments passed to this wrapper
|
|
40
|
-
|
|
39
|
+
// Get arguments passed to this wrapper
|
|
40
|
+
// When called as: node -e "..." -- arg1 arg2
|
|
41
|
+
// process.argv is: ['/path/to/node', 'arg1', 'arg2', ...]
|
|
42
|
+
// So we need slice(1) not slice(2)
|
|
43
|
+
const args = process.argv.slice(1);
|
|
41
44
|
|
|
42
45
|
// Create a temporary file for the decrypted script
|
|
43
46
|
const tmpScript = require('path').join(require('os').tmpdir(), 'devicely_' + Date.now() + '.sh');
|
|
44
47
|
require('fs').writeFileSync(tmpScript, script, { mode: 0o755 });
|
|
45
48
|
|
|
46
|
-
// Execute the decrypted script with arguments
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
49
|
+
// Execute the decrypted script with arguments using spawn
|
|
50
|
+
const child = spawn(tmpScript, args, {
|
|
51
|
+
stdio: 'inherit',
|
|
52
|
+
env: process.env
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
child.on('exit', (code) => {
|
|
53
56
|
// Clean up temp file
|
|
54
|
-
require('fs').unlinkSync(tmpScript);
|
|
55
|
-
|
|
57
|
+
try { require('fs').unlinkSync(tmpScript); } catch(e) {}
|
|
58
|
+
process.exit(code || 0);
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
child.on('error', (error) => {
|
|
56
62
|
// Clean up temp file on error
|
|
57
63
|
try { require('fs').unlinkSync(tmpScript); } catch(e) {}
|
|
58
|
-
|
|
59
|
-
|
|
64
|
+
console.error('Error executing script:', error);
|
|
65
|
+
process.exit(1);
|
|
66
|
+
});
|
|
60
67
|
"
|
|
@@ -29,32 +29,39 @@ function decrypt(iv, content) {
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
const encrypted = {
|
|
32
|
-
iv: '
|
|
33
|
-
content: '
|
|
32
|
+
iv: '798700bed3cf94c0a6c0ef3e05756e92',
|
|
33
|
+
content: '8980f4d4df4ca6de560db5439e951bf9b4510cd40d986b26883a055fbd8bfbc0213d5b732d47c14f36eefb356cbe94f1ebe80e8f8262b156d4320a9c39979d5edc8ab9eca52dbaeaa327a8e29cd7691413ad920ea2e82dfab8b1e3958533596a2429f17ab2082a246bcaeb1b52bb713a6d4c75fd3bccf36ac1f210e8e0f573f462d9bfab7738b44667c637ec30aa7fc8b512c44ad99c0a4177ba9c54b5c1a3bcff3a1cc357e9c7bba57a57c001098383cb0e907a2d41de3efbe24aaba0478948823c86a24255153e3705b9d5317a16c77d6fd699a158ee69d88ef9a8bf1152005faa35a89e0d1e80e5a9fde35c37569326f270fc904cad738a1263e599b1612d3f8e637e2a1235a88b4241dff8b933c06c771de649d3bf58572a57f71d8352effd11fe4fce0c0c6f0f2d180a1fccaafcdb11a66880bff0ee25d543a3b644b69a191ed3484ba48fb9681fcfa4b6a8f7f725ee6e1f9ad7d1772486515730f5c96aca1d7024413efcf35e6bf129ce9de783842510c01a2d21c57f9649d6a7af7ea5dc8728afd66be8814d0f18f52a138487aa51e19fd1a0abe6f050dd5e0532064330d937e98f350dff5e63b3fc2505ddeee40b7c4b0ebc691dddf01520bbc7286b42223e983cbf793209e2e77ed7757e1d15e8e7a195c74a7a9be1d8f40d1cfac82714f1021c19af4b411c2cc66777e4412fdf40d28bbe48c2ff5738bfd2a7550b609993a7847b424baf1a058d66693ad863c0fb03003d5bad06d91c4be0e1cf51f75b3256828f776fc1f9e98bd8e0521ce535d6f7bf3b387e2b04f8a4402fd4acea1d128933abf3019a093cf84bb0b37b7b3651266b8be1792520462ec1403ef2175d0306ebfb7ca0aaf3943cc371c7ad36dbf922bd85fda8d81364bcb8aceb4d5c961afba11b57c4cf92991a35be6ae9c089bf0e49da9cbe784594fdab61c008d033f140f4bbf062898e21633e14790c5aeebb9d0d30a252e4dc2a99e1a450cdde35bbe32b149f14c53b6c3be48b7d0a8de66520a3c92e389ee991c51d655f68f7af97dd53eb513093c81dd42e962cbd07fb159b01891606dda0ba8e756321beca2bca30abac169621d1ab1b95b0823e82c517ddf2d1d615212ee7866803d4000fa40cebafe0c9d39cc45ea25247a8418f3cf0a193cd61a6f61154bc4c32dba2f30489a3a0bcd42c2221f4a0be0007c32f6ce9fe314c55702871297711e785b8ee255f386fc395d207489eef50f4f17f6ae7b8f37438bbd2e75b9b716d3f79a2217395870d0089e8fa32daaeea970c4aaa7ccb8ce490587937d3fdbbde3f0c72a15a6c943aa43adf898b0cd804fbed8c0e811e517be3a7559c5b889c1dab3da464310069fe298cd4b0d849bac1b377283e63583755fc867ec8e3bb313b69835bb96dc75a6503474f1765c748c170116a8008319e72113cc2d729e6ce1eee4b81ad31702361cc06685be0745d8f4cf9849c27e0c9bb116eba2433e0816747133322ffe2e5b2437d9cce4b2dfc38aa89f328cb71fba22c6620f280b8089df0d55d92d310a2ab097a83ad7f0eacc75847df3861a6b488bbe81f74bc165f5a2becbcde1882a0dcd8573752f6c917aafcd472e43fff5d9f5df7871e4b62d8910d0ba7056493108fe34c230df88934ff3e1e4f9d340f431081263dfb9e41bd0ba0dc91b0a6f4ac76541a420683adde8ce9021d3ed7c8d72c58bd5702118fc19e26907e4ea880cab62f42e4de157e31f49944f1973c819bf85686b656279b2e2b190b9cc048a53f9719aeb6accae89007ba52f53f4552d4e0f4fa0fc60aae512a4e47fb2cbcf685d08b11b7046cd15c02c22dfc5cf6bcc31ad4b57a348b72ca224f02d8bc24a25b34ed6042125735aecca96d25c17a3a456fca07f9b3e765fdc5926d9499c5c625585f2524db9e48ad693523c74960d7518b22b1ca63a4f522a84cc79f39be8d8729c936112ee42fb0f13a4c29a19775822c92d3eb1b9eb6a833bb45a2a004893b0e51a0a9e4e6b44559aa797edfeb07d19c64f2d802d0e1600d1568155bcd1d8b4dfaa7e72ea39051673abfe54e1d55d2adfdc1dba389bc8dce6dbfa3db2f25e615eebd7b8bd546754793d0dffd8c1ee8a7ca3413a51159f2af69ec9173c90c29b008099e9968fbd73eec7b4c72b66ae716610337edb8a34753720dda684b56b65e2c5307bde239726d885e4db06df8bc7f141e1fc210f0e7ae70ea3acef0bdb3a5ed8ada48886e7fedaa8813cf9ecf287111ced7bab8ec96220055e2cbef930488e2b6a2121abafe496267e147ebeeb8ea362e4672e90ffc95b9fec4609cd9866320ef56d485247bb5e1e3ca08b500bc8fbf10c38c208e170bc5ccb2'
|
|
34
34
|
};
|
|
35
35
|
|
|
36
36
|
const script = decrypt(encrypted.iv, encrypted.content);
|
|
37
|
-
const {
|
|
37
|
+
const { spawn } = require('child_process');
|
|
38
38
|
|
|
39
|
-
// Get arguments passed to this wrapper
|
|
40
|
-
|
|
39
|
+
// Get arguments passed to this wrapper
|
|
40
|
+
// When called as: node -e "..." -- arg1 arg2
|
|
41
|
+
// process.argv is: ['/path/to/node', 'arg1', 'arg2', ...]
|
|
42
|
+
// So we need slice(1) not slice(2)
|
|
43
|
+
const args = process.argv.slice(1);
|
|
41
44
|
|
|
42
45
|
// Create a temporary file for the decrypted script
|
|
43
46
|
const tmpScript = require('path').join(require('os').tmpdir(), 'devicely_' + Date.now() + '.sh');
|
|
44
47
|
require('fs').writeFileSync(tmpScript, script, { mode: 0o755 });
|
|
45
48
|
|
|
46
|
-
// Execute the decrypted script with arguments
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
49
|
+
// Execute the decrypted script with arguments using spawn
|
|
50
|
+
const child = spawn(tmpScript, args, {
|
|
51
|
+
stdio: 'inherit',
|
|
52
|
+
env: process.env
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
child.on('exit', (code) => {
|
|
53
56
|
// Clean up temp file
|
|
54
|
-
require('fs').unlinkSync(tmpScript);
|
|
55
|
-
|
|
57
|
+
try { require('fs').unlinkSync(tmpScript); } catch(e) {}
|
|
58
|
+
process.exit(code || 0);
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
child.on('error', (error) => {
|
|
56
62
|
// Clean up temp file on error
|
|
57
63
|
try { require('fs').unlinkSync(tmpScript); } catch(e) {}
|
|
58
|
-
|
|
59
|
-
|
|
64
|
+
console.error('Error executing script:', error);
|
|
65
|
+
process.exit(1);
|
|
66
|
+
});
|
|
60
67
|
"
|
|
@@ -29,32 +29,39 @@ function decrypt(iv, content) {
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
const encrypted = {
|
|
32
|
-
iv: '
|
|
33
|
-
content: '73671dcd11c8d624920bf5ed80db592180bf6e413f24d567ed0a65f897d5135e50a403b35074f8a41db868b868f7ed8366f196c959503a0ab2b06671f21e62ac6dcda983ec19606cdbcb5764481280368bdf5f577261a5cdaa51e13412ec8d8d8b55999fa43a2d8aaf4023ae85a60faffea668a1964d140013d2ebbd3d67425b935bb79db99b1120305530f51f93bd817e88b8a86867f54094ba2a1a5d0349f9c562a29851e20773822f7e29d086971d86c01c5ba5ccd344e58c211f24516da70ebbe96aac21eaf8d9d05735ce4a1536838dbe278d23b479377091d13e7a39ddc5c67661174f554f9b0d315ec0cdd3c28aa4b36106ba4f11d218802ec27307de94a833864e491a369218668328bb8e5a3ac8aa0c4fcdaaa462da859f3957ebf16cb3a8b53fa98ee0beb135fb1dfa7040c3509baa1bb51761fe24410029013a672ed4afdcc1b43eefe856ff5a310f1fe7d3e345f167d11aa583523a16341ce95da2b138fe121d92746607cf53ef00d14dabc23c2128735848b2ac6bc267327341a6b80c182808613df6ff286d97b895aed19b098707a709778233daf6e7912287486f69099bdc10edd70d56827dcf1a25b8c7f83c8478cf7cde3685c4034d1faef3a568288da962f54e2949abc28a7295f46f5fb2807c44871b5edc27c5d525a118ded861c0dfbf90c307878b15e8b85b60d5f8191656e6d250bcb79f75c3d7b1b79960a473c9c968ee5558b01739fb68bce47e8a63214a1a75d7f8acd26e6a27101fd4fbf2748203e93eebfcfc9f39105f6075b057a1c81f6a20ab2bcc4d88513294a6f778eb0003ae27663c6bd079d3fdba742623158c23abb7d8a7c3edac43e05d444f9608cafc502aae1e8cd13352824404c30923e4bbe1ded6ea2b45ff0665bddf892f96dc3cb8c2caaa02553c206cf8ee89472412b4289a1533c683b62064f58ff855b9655c69aba7ec08df8b7d4fc9a6acf977c81492a138af7c361b7fba121b9ce66498ba9bbb3dcc7df154925a3c0d42a67505993b427ac24c8b3347a7e489d42f6c84981d7ba350e86f3f5ccd1f22afa9d914fb42df8623de7512479598dd6a2a8d1ee40ea179bcad2f1f3d543006a0dbbcb2946fa3f6453a64d602ff1ca6b1db4f418e7c8a68b820423ce657c11b2b7ed5550e22a1bc95e61d3435b0f8de76b17692126f006e5a295707776c76b9987beb7571d4f69ca63c149c745ea52a414411b72f880af1df780ecd897b73cd51eab7f481c9597902e248b22a9d9764fd80981cd3ab5ff3506169b4e8367772c7a16f4402df3eb9b8d24b265e56bd6637927cb9a4518f9b1d03234a8e1b68cdab4bf0a4ac7d79c14bb61fa806d24f8760fdb573e7b99e6569c38e5ce294969e648a5a30a34197c7b2fcc43c1042d2de223891c94dc2ff7b07de1f8e74e6d55b805ecde83ba39306c306f9f17d28d4cc113a52e6d1371621f14347a55dd90c420cb088d1c93938c6a8a6efefa9f5483cbdd9001c7b38da208f3db7d0227ac52c4c217cdffe16ccdf749db86745f010b6d896929c15421875cd3aa4593c00b6095859a14e398ae0fa107866b4435b3b577753341310bb1925175e6b1346b8714b2575d99711fc46d389e4514431439471f0a82a99b63ccb218a62d9c3418dbfd5480d19588d10db537c1535dc79c6e7baeb48016704084dae39ed6b9d3d5eb52d25a85248b280fab6f61398a11bd3b474906aba2cf0af7be1a379ad4ed45e55cce40a93fa6ef3214892da73a7da5b48760dd520d3ad93db8de2675cbc0517885f02c749aa47687518f21cea762f63ac8e044369932a556a77d96754f6abf42d4f5c8e89bb16be3b89b282b4af187e42082e0c5eeb171c6f981849b9f09bc2ac0eab13297aad5158241a7f37df3b1275fd71c6a5107d398e61996ad77689ae486daedb6e616bbff1e50d7a9301ea2ccf5542d196dbfdacab3f2a19bc3928cb3ce380631be9cb22d2aa1ed642fcff3c7e2625072912f3bde5ae37b349f7168d6fc8f65b5c3f57676afe06cc34bceb1fa2824b7e2fd047e23c190c15c046bcc4cb1e8490074dcb0e05129b0ac5da7ebfe443055bf58a8818b0bce978736a31532d414563d1721fc75794c0207322479e390e0106517a411e226548e964bb0b4b4561a057a6efa2c742c299a8f2d7eafe0e93e97a40b67cb326b1ebdccd23e865c7f08320726d7aba19bae66d91a49109193f6d99c40f1ea2be4c2d0a408c31c1541998a0a46e9ada87b35ed005c1dbda86d440a66d3d68cf49c862e21d709adfe4cc850aa97e2b282b0689b1f04202c147948e21069ad3425edc1d35570b74b8d4a9491f14f9cd46af75a228880766e205d7d3d0e06cf3a2c0df1c230674adaab2a8b19afb24e435e05897f734c68bb3131a3bf227b6c5811469b2dc7301feaba64fe6a2fea9ee96257ce85ab5b349c492cc0d677ef76bce9bbe8e42d80579d90e7779829b03ca06aa896d7906aaa29a90b88aacd36916f141855c58ce6c4934bbd58083d6d03ff046f7325d19a6b1103c21956d26c659839790a9281dcc3e289711c775b776914fb93c6effd6b9653f5613b5044a4753aa5837241a1a1b60f5ef9f242fd64a00b20d418ba4a5bf9ac593f92c6357e2dd8674b7b5d17dbf743dd2f79eed29af921ae4a02f073b099997b89bb1bbb46e577a8395961b4786ab3422695bba69412fef32a621d9a956d00836636e48fe2d4d13ab2f5a87344f0905d986e1a61bbea0a6029532f8fd63ed6d5c03e819b23633f62394063b5442bf5fe5c6c1e840109aba7363cad94ec7c8683cb4a8fac1c9593fbd5fa5598199f9edddf93d5f5fd0c7c0556a461eba006b1f257b3a7850ee614e7d9682e6955e937593f5bfacf451684a73915b73672f858849672692bb925c3e44686d41c89bcc594b96d0dcce9efa0a9117fbd1fd1bed6c5fd9c9f57998627166d41f490a575e8b956855d3dfcfac8f8a07361323366a8f2b5e4667a578f6c1c03591bf9be3e44199cf816eb2c8cbb0620e1cd82b3d23f1d2bb9da658aec2eeb08dda4c63b3c36ba50fd18087b22b960f0ef0d7bfb2ab93a7f71fb054ea5ea66efce66315a9214c1a11f2dd5e3e6473a044ac8d5f04885d57bfa6781e43fd5bee720b523949255ce6abdb0916a0ff23d7af72c04127a08b83bc5a7d497826bc974cae44b5121b49f617d5ed0c8036143a16cfb0f66035e54332af641881130708fc39abf2e6508459dd37e8fd49c2ab3c424544a831d185dafd69f55fdaa71db16b60c03aa396722c698bcbab072dca4abac4b17c9622802cf1968ad1a3d232e07bbd7def2e39b98ebf6d765df685ca989ce952a5eeaedb9b95d7b0945b0ec55133a7e5d3ac873761e97c275a495641cf5fd725ef15663b867b213f7053c3224fda54075aca8ff05e17b0ae8c0481d081f7b429e377b14651b8539cff2a20272eb51395d1f6dd20c06a774af4eb4d9fe50f4c8bf0a2d4af849a2c1670f73cd605a5d6467c7adb871a420037dfce3cef8fea3c903d9796dc3e91a6da52a41574d47341eeadb84385db1b556a3cdae63ffd2a744a7a01506901587f7c30cfc217d85a59d0cad9ec4ec2a214bc5b479ddecb27674edf20e23e6d6ddcb776468180cf0a900d923b5ca86beaa0968c52f2c7dd4550b763e53d8f9c81b7525a173c1959fb2fe79343fc9cf2d15b3cee3f80ced6a75ba6cb5acc87e137175da3b52c08b3c28b2814c22e07c08bddca27ad588d68cdee9d4f67cbbe7b05ea036a128368b61bf144ffe5543ca013d85bfcfa19262a7e6a058d445f31e63c7eb443a2965dc503064606ecc694d3fbb55c69eb9cd15b39e1e45111f3697381c2bcc609b1acb9be8de7fbf97ef59b42c4e597c891fdcfb5c9dad7fc0d2211b0574183d2e5765603bf13704258a4a7d448041f18f0d1ad9dafa32c1faa09590fee5d148b5335541b5ca02974808c67995cfc9fc7b06c7ea498c10f159f3f8c9381f98c99b42fd0108ad6720886eca3dfe7cd01559bd11ba79fd96564cf3395eea177d50070637b1611b9c057bc29f4731f8ac7452ccbfecd9a1cf4955e4ac2597eeb6779006afc79bcd7f45de51cdba83b99d31ea3c6c09a951d7f24990d7ffd972b861569863afc1e2ca10e2295870ef7ea281514d64d514b25d678a0448027b91b00298dd0eda8cc1bea28573b7262cdabaa129ffb7f05e25458da03d1ae11390e12ec01977084d658b07c91a70f9df8b9bdd84a63c2d8a7dd7e8a1aa1d40f8c40f175c3c5f6983f571b3dfab19126f004d3a5ff166c2d9c0172d9dc9183e020fd92dc58ae2677a944d00e2a37a7bfc9c9fbbf50e83465d27f93b6cc4996f83ab52fe5e3bff9dddbc038c99fd1917116d215ba2fc4fad1a392f2f1aa929371f5d077b7962e51e8be00eba3514ad45db7b54ca10bd05227959456c19d297afb610fbb2b8ea850568eaa6cfc8da3393e6d447e1997039b7cb6f2353b1927556f6a4293d96a61a52bf00442f29ba8a7918a7d62a575e06eea5acbe74bf042da00bc9943273bcfc54f5ce993c89c213ce5b21ba0cbe6b5afec7f3c9e061a147aa33580f42e02f350226d1453bbea7fc567914cf8f9289ae6b7806527a66fcbd3af8654ae3883678d05cba441185d2676f7d588c0d39ae4bf801831b8f7cde2417f203277fbf52105e03de1449d5532167c104b4da2a356c2419f69169cda1c55333a4b158e116e0f7cd8f5e4366fd375c3077b86b69c760b7a96a6730629377a82d676f4d7bb65f37eeac452876386bba77f17acba1586aa26527e7323923dd86156da135db6b73b90156210ab41fa3c86e79e5996f052f62232535560898c47027a10e28bf2b5dcb3c1eee06c5186597afef2b471f362d44b993869f9bc9421f26022ccc28fe17266f5ee8942e3ad4e1b55e627cf6b88c9123416c2d7bb8ef9d241712ec580664452a432077501486e043df71c0b447b2d98e1d2795db0d7c2087a3d6f79763206fe1135ea9d8fba14e4f788b209d96de96026e8025edf15a0cebcb13cb7196b3baa85ff56b3886ce3ae24f5ea4f62f685481fc38c2e6ea026373f2d264a013c41385d5f77e98edc9d8931c2c9dd98f494c919cde2d9165483ecd21bcf235c10552e5b2838721ab9acb478cc73ddb160a172a5c1d0729fdaf4d8995166dd64803a6bd8bc2314cc8079f337d6b1ada7baa147b6c703383189016106092f052481d73c8b6e0f97e37c19d9a8056f4f0ebe41417755eb0967520144002a1264e0439218473955a64b49176f00525844a7d39654bb8ab56990cd7ff0ae2fff62936389eb079c0fde2896541652848a7f5c7724556dfecbd35baff308588e57d34a4dd59f8f70e2a918fd15de3802672568d16484a1cab4138781741dbeb25ed748fe84df67ba1aab3deac0fa2fb89e1a5e8eaae4f592d5da7af394e9075c6107746fbc7de3c117277365f8ba3251c3c5f7232ed8ec49d8ecf00d7778389d5b7433b375628847d104f1b715bde3f10609caf428070ba20a33bc9f6fc2e3bab4bd6e57cda481b53a1d65ebfbd724a6659cc4908973cb17315af2dc4621d0c900b23c23fade725325f213e4bd3f6a1b3f4199f2710d76ad81c9236b3ed01e9c182c743a2105dcc36c0e8101c07134a758050cdd8c38647e93a7d7be521891dbefb5d2b46e3df3d5f23d4ea98894bf324dd656cfce9e95f8c6a615f333c16f05b5c53f16c88d1800bc7af77c99c68730b72317f94aef80c4be9aa2f01acbc76927bc9c7b978f06856b4af29b192d6d2a9dfe5abd5cb6f29bb1879c8b2dca0795d5190a0fb6e6a6fe30fd6c9c25ec08bcac5b283905f4b7a86b1648f5c875c1f8fb3abaccc58f0fb419f411848fb263616c49c45cbbcaf15ce9904e3753a556a6b714efa1554a4786dc960f59c7cad061148a27be12c49181828ac0d5fc7fdb6d0a3b1a9b293279e6b97c51b2e450528fa72102dc153e8a20b9761b296ca7aa267ba647ae31b357ac08c68a51f68ecce3813d4b0779f2f3978ac3169fb2aa911fada8a0b53190c7b6e251c609ebef9c8775c87ef1fa219697906a4af0083dce647c886204c318e56e68fede7b90f8508d329046de5ad3bc690db1b75c1182abcae3548392ff0baf9102ed6c5760642edcc9c08539252cba376b99556fcc285d627990ff9fa4b38a761c51f674c73e8f115fbbfeb980b9911af2b0f0df4314a3617f30cb7762b807f2bc2a1e2dde181afe4ebafe4c0db5fab4c5ab26ac7063cc15ceb52fe889dc678847374f73f8d03d690f674d2ad7f5c582b13f0cdb4ca59f400a0a193a0e61dc0c134e6e9e2f28db9683954472b2019a91a38fbf16c77ef705c62868b66b8db80e7f1d1c9911e6aae8643b7fa3ed05adce1405a0a2df7b872bf13752f454d4af20d1389766f9e45e9788fbd1d98e209f882cd5cd6690bfa2cd3224b84bbc1ca1fc61be0c87973fbc1364ed577b721833510457dc2184bfa97b13dc457f1f484b2b0a98ca01baa99d875d9c06d3caad28aa4e6e897bc217e014fa57161ca60c8b623f942412c62945d1d80b95400e56e468398e8ab6fe4b6fbb339f0a22313703ead7663003c8d89f32a88918475533dc71398de4e4d919da82fd2847d3cef2daf942a4bdd2f10c577023bc6aca8ba9daca84a37df80fa3a5061bc35df17d594ca302a3ffb96351c7e1728d074cbb09d4246d8f46f6a303d821673d6271823d92955823bced1cb6f62e1261e483bf68e327f93763f5c71febeb62ca0474be79399645fddbf9af7aacfa40fb95307cfbefaae721dcf4e65f0d87c599d87b072fa3ede0b09c7faa282e624284ff24ae59fe9fe0a6089075a4fb50d41513b6be4f6de648a1f089d90881d57da62abe9b071069469dac273a4e7b58fd328b7d04e34c4c57a1ef179ac7cfa8753c270d3acc7a2d34a2a0e19f015b7cd4527f5fea944fb29d406b267b6f902414e5513f70899eb425632768d1932fc86f7585abfbe3945244c18b6359cf5fbb69431a15b1fed37c70b89332f965bf969be2423d2fb5c9ff2daa56bc2f485445fe5cbda9bdfa19cc5104b84949e619e900e39b53d29277c83f68f3ece1cf69df152351ee3eec9c194cd4a49087f1a29399a4ded29293f5eb1182ef43bb7bc19d4ceeb8fe10f463cb554531b70dbf403b47f0a23161b3667fff4ec721868f2878263e29fc9c96b506d664e0b8760cf7504b925fb7bdd7623807455b05b6f2811786bcb7717f4a44ac9e6482d5c336c2779b39cede7318184cc4580e9bfa9ffd89dbbefc94f0898639d23cf1aa2ef23bb46543eb2320dcc1bf15df3d02bb4b4ea8bf711769dd9fe9bad5f719625ae372baf6d1120af96c3edbadff13b6b42464e5d8a643c7627e9912de822c2a7a3022004f3a9fe56b502076a5640b35465716fb72b9b14f6c9a8a4110b8d5bcba6a0e3451688f035f61df108e7443062637837386d424a6c1be793da74674226b398fb2a84a35cb6fe8e814fac1e8a11f2a38a74e6c0d72f4d8335c2353d176eadbf419ecb0ad1259a113481602719e38f795f1b77922715a66237b2e32db7f00f29564177fac91342861b4013b1a4c2516fa3b8597403e348f02514ac513d658a6ec6470cb7d082dd803b2677ba4e3fdea388a44fed692198f62d7ab464eeef1d557d6dbf52ecd02f88220d2c31b0da91addbe6ccc4852c72f39f9b1326bccca31c49584d8bd160868ff61763c42e1c99a77ce3043332f8e569d20563f5a21d3d02d513b46fd15bfa0a1032f730913e195e97482d5694303b54c71dfc2bcf5d52d0c62742a7a3eecfcfcb837012909e11cdd784a55a0eef38a07a3190aa8ba159d2479438abe4d525574b2107bcd6167abac621b152d3cb6aefd91d1046a1b406351b422d6e174fb8ca57a274a39d218cc84c3aa0ddc2b9695aa63aa4e4727691359c13c88b8b3c373597fc567617346b3721924bee145f1a730efac2fd7f85761145f6df915afaf166cb0d79677387c3640e344614c8cc5e59f2611a2d66aeb6b74a11ab6a259757c5da5171963fbcf8d27b80cd239857130c195b0b6f8d1c91bf7c1808e98a9978c4a829b8ce039da6df592f593449fa76183d52f81b7bc2acd747c62e71624b8de6e7394abe455cffc79f60bdc990e6dedb1ba2265742025b7e43ded6c78bfbedeae8b9fc1018d43842c22d9585b9500d300cc41086feddb0003b2f6250e986e0c795ef0a28e32aa145033ab7347cac495e4185ddcf353fa7612f024b031f1b65b4aa3cfc656a16cffdf6e9d8aa1e34fb812950436cf5cd35308d991f0b8b1d21dd6f2a266c1f90d8269da50c104d086a4e30887161958391a35078ecfacc735ee1b6002cf6b00a0873c317e2719a7cdb9cdc7f717ef65362c0fd3ff4c98fc7e905b570b8329670232cde679610c597d6c5f486418807561083c4f531f760e5c609de39758686af0429db97f70b4b1635f2af7f2363ff5a4eecb4a7b3697065153ccea2f46150bf4d03c02fd6482d7d4b5a3320f49d89fafcbe9b4db6f4a0bfdc3355f52584a025ef1672706f9e5db62f2229a52d075a77480e484bb8614f788f3db810f7679e724a5fbf2e95616be656957f15f20b1d0feb881e4f58ee4c3265bef9879c419ebe22fc56fb043d8475f4ffc486ca11e7c40bf463f0c06b59b68ead08b33d81f569438692f2712080c3a8dcf786bf46c9dd7d89d63519d7f3bf52dc043cb4a38bce76fb5341286b816a59da8a6b0a046ce1dc205a34da3c868b941b708d45eeeb09c2cb218c92af5caea04aef0c02337100be108e6467542ab07399caaa1f03fdeb8082a841371d55f31cde4755886f78255d7d807f141e7d6aeed4bc58cd671f950e2f6b1caf97b78be11760f437f53c0cd99e69a56305f46d534a41165dfc0088aa981662008a810c460de1de73686e40ee22da188eb9bd6153753ece05b53014ec408bbd7964fc9c33d72247cf9972d917a47708677c9fb38bcdfab29d7316edd001b841a43ade3edabf09a0ae00b50b8ae7fc9ec1ec670b563948071084fe98bb325163e68e5827961c91f273970233bdfb696503aafd45713b4255927dd1b2bdd02eef7d57923b4269455afd7604809bd74ac89863d8890e81bc22ff0ae8bbf792b8e89319f74683ff1a2c39c75fe9b9b41e7829e250e84592782a415f01ec2ec3696a532aae98737e502a66b31e2497afe2e43404ce8394db603caf6726053fc0feac4d74871a64c45a83d560fa1c2ae601d4aed535194f868b26733c4c39d85357206a773b67689375fe622af4d31a5576888a104ac0a08b73fdbda2c2acf200b7a47f46f194b2e0baec2a59eb247a9bd51cef184a4ec8cbc0d5e7a891601e907c29d263744e3da2b538ec2cc7a0a53e385ac60525ab3575d963208cc7f2719ab49160fdc0a6f0119232062e4ef34bf338c81a2a14c45969a1b1a18a9e723f15652dc30180a7a79e07bb6a866172da8eb40b79e796a0dba02fec4579fcc49da475dc358a9283c0be747813471a0624730bd5955bd3f596c5ec8d3f1c8bcceaad45134e56b64142927fb1494ab590cb039c46e08c062f11acef7c7ca47c5d76ecef35d3c08b1ee8bac62120a24321e01beb077f31f73652de3369bdd6c3b4ee18a561e79172bf27ba3f7b91b7c202cb520a0467a9eb0025978b4f94903134569b5da8803a48e9c3662b80c2fa060a4ccf231ee358eac04c4744358e94d3dbee48762c3980f880a648a958550577d649275b51836d6ef0e6c9ff65c667c52c0ee8d78817808ff8593a0f44fa576c6e62fe366bf00cd96b72a1573a91f59620a156f453d9e40574356451ec90fcd147749c04c1ac983c0b594bce8e3390719301dabc42e34ae3260d8ddb2ffd471798048831d484c2b2639fb79657031f5b59ce6930640417692ebba3025958d79e4c4745c2be38aedc8131db7b8f41b68790b603025a2d507c1a125679f4b42294a76021e82838fb51c62ed2aa717d0b07d9f68d832590532d28e32e7c5a1db6231987fd190a13d76b00a5f57e5ee341132257447e91cf27e48c1842cf1e2cf656ca1cb73ee8b5f25866f29422beb48393e6e811b93e32aa04a679b71975751b554ad38975a2bf0553dcf2c6274e7ba2eb6e65852ba103c2c9466702c42e6dce40208fca05dc87f815dd7841fa5738e8a7452ded8bbd8f8620e217afd836da12db0e5f4fb312292cfaf2b67346c6c5ecff7c719f0be1eb512e5f1425a595824bc92bfb492da100336f2e0f543ae10e127c1d1037ae6eca3b3bf4290c6e3dc5022673d1e252e966db66f4603a6c805b4c2c657f2e893bf656b3b720674bd06ad01cd9ac61d1f1d4907d168e99e25c4fc07eda0747b0e7dda07654a0acf839063edc40e8fbade68f2f71135cbd953c65fa3b3734b0c580711da5e7c20a3ecdd8b2af36c59ff333d761db00cd12eafe06eccd6dabca2354be52ceddcb275694467f4724cf487d058c62324881f0cc69e330714c56d2c8443aad1b853c3a745a24bc278fc2dcb01891d68b332d374cfe0c407352a3de2cf726c6b279d34bc12083fe92200c2939ebb871393ec26c805c243599bc6d241f88f63a01342757ab6c8cdcd682b7209ff167850775c7e0bf0b879e480688f132b4976bfa1373c35e43a1d62dc55e536564af01060938625639d509a714d2579b23a4257850337ea72c77ad3e3812b045ad24a9c6b749d4932794ab931485c398adb78e875445440822027626ce6ed738aa46139b48810b27a5d9259a822fcc2c5addc6793ade67bd4b970ff358cbbd1513a9300f76d3884acfd9feca08827140058303166a819cfa75d3012d465a5bdd23e4702a0de4ee241e5106672b0f583c2ee1236aafc7b2509be542058f148997965ffe735e41b75ccfed07f327830f79dbe0494aea477c8cc84924e314c762ed5748306a82af354af11a34fd7ab1adf103726f0c851c5eabfe153b23d14dbf96deb45bff0d06f877117fb1d54a7160499e5088be3653cf176e380db2f6326108d3ec91b40763c6d6752a8de3385afe7ec71bc1dfc957f4b27d37c0413d4b6d2ddfc3af6d98d858c727e2cd01efc66f838cf1383c902dd07ecb7c3b5e683b9caaffa3d4dc59482fd77ca33d77501b6f1bb9cc4589daea777af309d762537e9ca18db9606546ab43e49a9a72592649ca9dc4dc61dd175ae0dc9f73132c32b57e4fc99cb8cc84968ee7c78cbd184b7d2332d57dd67361af59dea0a0a99346dc386c40cf274ef5b94393d1f7b05d52af65fb647922edd46ad899ef570df8fddefe8b5fac727b9f53ad71b097d28ce11d9c063b7ed91e2ba27fd2aff2a03357ce320fb6924ce26a8d5dc06745725de5e7d1cefb9f8a38ba821a4d4ac0ab18d89e2323d85759fb8dc866c48fcdabfca65bef0deb0361d9f4e774319b0b6530462329b48933f12475147ff70bcffdc0ea294013d8b3a9d409a360a9f017d8638db3419119d7855447b4da329fed5f258d5a6901773c55ba6c4a144aa33cf92d641dbde2ecda486f0ec4732469534fe7ac09cfb1568e78306e0a1832d05ffc93f8761233b22bdc597a8de920df614437dffbdfab2ffaf6f6f1f0c9debf2aa9b32cad17e51bb4c28b61d031ff49426e639dd07f84f8fc83fa3a743e4915f25e552226c252055b6828a0f9714ec40fb5d1cac7d53565a10cb89e20b20e8ab1d8a0856629b5ac835e255d80d6b79e05c85d40550e945109a59089304ad1cc30004780ca7bd0891c02dd068db14eb7c0029c52b1c8e321d6e44b3af2f9b6f4fa109c8fd6bce7896ad25c80501b7f9db4ce79d4ea3e5061448af71f816579b02898951980b6f998126a3e93ab7d34546b580f549c2c777b9cb2e205c2d590415c575ee2a8f1c56f5d6fc00fff8acfda7ee09efc52a28d1e877945a678cb0aa0523148b527479571add84d901dbfd80b45842f765a26207ec19a3f9215559c390e017c444bde55fd8a01975ab6f56d8ceb950151dd1074745b847bd938efbf0319b35a0b7367cbe01b68ca18aff46a9a660ab14c4d329808fa59e5ad9b6e3a05e707b4183ef8c407e1a85776d94507bc228d04a94a105dacb460ec0f20bd03d4eb9365f6d25bf26a92599395030f267c547391cf3393a8889cc0943032ed7f8d5c2e9a07aa3b7ae17b515b33a8d9c9651c86c0923ede96692d945763f9b7998872dec23453a1a5eb1ab6641ba0cd809fd9c11815adc636df41dd7a23d2a76172fe3b6eff39f802c59d29f4356b12dfa98de39dc19a4234f804b359a380c11420b73105d738dcb32aaf6c4d3972bf7ced034be91cd622afbd8a2f3001bd8ba89177ddfe4c8f8adcb068da052e48ad1207871bb3764fc3a4954fd23b777ada7a9abb09af1e29be7c416fbf1205042308873636e04163c84eea324a662607551a41fd42b0bd48a558a11067dcf670cff881956a70468574db7adecd9776274145757d990405cbf784510e72e1bb8be19fa4fdd29aa83a4c2de46ee557e54d04a7af115a3a5360007f2c5afd6d38360293547d7f8adc29b66c8520c5015a35eeac85a01da373b4cc29b59711f42c1fa52315c71e68e373dc2dc8a1a3aa7ca23fe9ce6bbac93f0b9e48edac62c3f4588f1cecde3c6b18ec356049f97ed7d17fe25f7112c4749e2a698b086df07bc345c4d75adb6954847cea9b999b3a61207ddb3e2d8e2c3fa51e861bd1ec2dfe70aa08e69a01394d9095e41106824bb103718842b93c8c02d83d1f2e4f0b890b820da11639014a3c5d5f2eef647b58d19e4c11e70fbb756a37cd3164fc9a5495879bf7fcfbff95a4f3a99a722b12a34e37c7bdfe66ad564f6225652713af8eb917451d7480fecbb3f76b8119acb71afbc8ad6f86eda1442551e5f190283b616d8f0888e8ba7ea176b3bd75a42c73e91bade3594102a4be3a51abebf8cdfcad02f8d704c304441a6598e8260e52e7abf2a6093f5a541ec6fdcc39cc0b3e8f8a310573ac52e24a6c0046ef24c2faddab3fa51ef83b436a579821a81b404e61412c8a14c295e28b4e3d26d4a2d169e48770ef6b7a1b8efd03728cdf19df9b2d84e2e99f044c804d7ce9c1f1898fae3e9546d2878d37a45abb0d80bceb83bb22a828c204555eda65118d1556d1a031f9aaed6b4edeba1492630d70121c2946a1af5f9a04f846d8c2ee5cf497ac5f045786fd95b9b28749565eada25c9e2cb35fab4e049242fbdadf291ab74e1f4ab22b7981532bd4adc17fa49036e2052933e3c3c948c16537d367ace12a80840af2933661a2dd2219a9324c574271ed85ddf0f1933d4e241c6ea6bc5b7abe7e14267d66f3d36f6105e7fbff8b72819b6b7ebd18fb00a49686e7cf9399b5e0ced6c3adb52f3e21057cfc614ccd8eeda7c2a1204f09e62f8b2524c4939f5b8ce599ffeabeea76752307ed7b2343f18cc5001bb9c1f03920dd3240132113264d4d09971d6c21defd924ce656373c9f16d3d07f47faf76a00df0bfc5d0ed001187860b580cea864bdff9bf7c89481693f07d803030ffa18960a7407413ee102c8936593f9c7e3fb413653cb07ba0b90d706380d34fd2cc663c73ce29a67f27e2f23a13ab56c18de26b25d7026e15eeead8ae110b9e63b6762c5ab196ea881ceed15298a36df258ccb672691a5305a34f163a4c725ba9ab040337174eee3a4ae49d067dc9c8395a8fce882acc8b33abafa31441638e0711fa43b7f5a8b649adb0d0d3bd5be60664f7ab8772c8ac22571618fc298324523ca58c11c72ec99a7caca75b5177a381b088b8cd5fc03e2f7318ae3f622e4f64887d5de8e9e9b9438430babc76870a621d5e27de9ed3d296f810c6f335a608f325d0864d539e5ff21e0862bbbc6897655d5f1342448e3cc10c521eaad50896023fb31a6aa632124f0fac69856cef28a67331f89fd99255c0e7c7649a1c2dcc8bc4919176f633086f8fdbdc39aeb8baad9426648b081f0b74943b411319fa9277a6ecf995027fe677752ab11c87c287d7daab42f9e8223c1b'
|
|
32
|
+
iv: '09f0001020a5a26889acf67e489aba77',
|
|
33
|
+
content: '6d550cdbbe5b130f7ad4825d3c46960faf5239d0fbd6ae59982c7b4a16238a5abf9b6b07acc38382b251bf69d130d70892772a2b3a413ff9c251588fc94cba51f815692cc75a665b1f33bf9f1c9154083357f72e9181b0761cc085d9046cbbc32b162e5a81bd711f21513c5ca8aac5c44218c627d8bda2985af7cef9d49314973272382f45db9d486371ae233c9e2bb4f8ea74478f6ee895b876ef1c1f980f6564141af8228b353034d2ca6044a4c92d1c1fd3a0b3e8294b90abdf221e42e9a5cada7fe60bcce719d43492a4a7e527d29216f3785dfd651e156e571ca4d0802813b94fbf663136276beb6c3bc9abb5ef1138e42d1de4e9b956fffc1be61adfdd36b2dc7b31e7a71e446b52896149c496d9e69f5f38826ed5187c3aa60df6a98427b0f8e636c27e08efc3b35699284a3038a9e070e25416ccfa80c84f82bb8a44b044c31aa989a44feedfb323b0f4d01cb8994f27759c13128ae075e1d0614b6a50f1d43ee2a8e994825979acd66e7fc8c565c3cecc4b373f8e20ac725ce0bbdc06292be76dcce0e2b49aba92e8fde33fb20c636347f9ba8ff04a9da8bf9c73790f5a99b7e50cbc3ed9873b593bc10346853cf050c9d7f2c4b115f2365b755d5d032c0f077df8b02fbef51997286524d4073afb8128b823213430d7657cfdbfb743dfedb4af2bf4a7c62f19d98d2b525371711db938146eaddab5fc441034828550ca8e7c8b9987788f0f222958e04f38a8923b7eed4e4d86de600a28506419bb700f2b9970976b5272bef96ec9f9ab293463dd46845516a74b06b57301928dcc5d196ce2261d495fa614c009613fabcbf1dc6353ab31f56af30874b187e5b9be7c9b691b1a635bd29d7314dad595fbe334c51616a197c5638d6d8bda7dbbbd857131a6fc6505401977437ffb09f2b0df9b56368a3e5d566859a586a97e139915bce784b830af62bbee9bce06803fa0182f3082ee74860f927e29f0b6cb14f376fa4c57603b7610a5350cc0c488486142fca74dd92d392cb7627e6fa435f77d3ccdd354e892f0b6e516031c18ba6f542e97dc691a551817a8aec3f5efcc960f92562969a6bce867b885fe1475868b09f46d714bfbff01332d909fa13fcea05f3c7c6cbdbfc1e103930c737f6aa236fc0c6bb97bd88853aa97a0bd648fd4f00182ea7b6dfc8f98a3fbcaad81ff4a25475df20e3f7f5894444b3d61e45596a86a42e50afab7be96e5aadf250cba9319d9c558f04080a5c814203fa05da580c0c154e0de8e1520f374bd9e6b6eda383ee496f6a9610077430382643bc656d40e75715756189bff1903d95391d53b8fbb328da7d2c2f6b8da3d17fa23d3ac0948a1b1fd7a9d6c8df0984a9df7590fbb6a0f56d8bd62bc464d64a03a63a12ae16882fd506c1d30c06a5f82b2551b88dbf025701a0fecd2552eda3d9274a64c45a19667b85f12ac78ec74f0b3fe345dbb64322d6a42e976cc26446ac84f56a08fcbf943a761a545aad65523bafb69d595586b4632bf64845a8de57f58cdf7166fd5d01c42ab072f712b10322765e6d5559b346973d20be4a0fdcc1077266b1b7956e14bce1d6262c553969ac768c97a4b129112942e5d3826931b06ba3b428e62738b3c200cb36522bd4edb5cb466746c26bace62d55fccbe61c320670e1cd422f2dbec4bd7854f641faf0973e60b8c3777a0e7e2078ff2f12f1c6a02c5b206066a5fa8f5bd6e315ab4b7930f630a5e87ee726c34b59092d2e184902bee9c35f04900c988ab3dd55af766106fc04b45e2187bf54954e1de8921f06560e0f74cdce937c7e0cde49793b64720175b44a6bfcdd3d76d19fa141b686db5bc8be31ce4f8731756a9461a66037d7fc5daf9cb2833af6ebfe2ce7f9b6a1f2041d5d9728aaeaf75cb9db24648308dfd0a993f6ed07ef2982eb290936aaca58cb09d226de9f76ba7f27d1aa7158b7cfb699b50c2bfbb9daa9514754264be2b9cce719a72e74f03747cb28ba12b8c0b9b70b571de3d1c7a6e14863154e1ae86ba4cb524eaf0085818282db0b35e3271a9abedb94273eb1f1d8d94e06bafcef7efc8aa467aaa9d77599d3e4f92e677da3d03fe85b4cd52c2e8b93af9e6dd55bde25182c81ce8a73132f38a52c4fa102d79bb64fec1bd9c424a42f2a9eaec5b2226892b0d47d8eca8bda32d7d3d2f643f3dd4a4ca76f64e173bdc8d4807f0c6b1abd0ec52559fade1b45f175b53d589077a1db4015e0cb83d925af9a9cb30e19c7033cdeb896dacffc72040cc5cf67b1b7d3aaa7c4e11c606c25660cb0e62eca4a2c1ed68884c4806f0be9a0a293b682f72215a7ab3820dfaa1ba6b1fed7456ed27d1e7ef342ec4b48e7d77ed54fe2a8e0dc9541f1cecef1e2e5ca3b80a9389304f2038fdbdbda0c5527330d5f875db85f2c97a9afb13f9911736341d99427fdde14674662b81a59cd8a582d75a63e8edf4d5211ca4727ef07dd5ef04560605b0f6659dd8f903cf45ff6ff118e0b3d4abafad296d653d62ad245bad0bc5045efd60f17a6a2568f5ef2989bf91821c51780834fcf499e5512310c2875d27b43b181fc89c19b53d53a9703283ad80ce9ca0bed52ac636517a629ce64145db6f3c49e4d09692c180e3d4f7170725b371e449368b6399dd3496e9c42f8d2972176f5e0b0041c87af6fa9da687fe1578558b145015db7dc6a73d7f86c2d0e2a6e58bae8da3fcf09002bd475ed299b41681b6391069b10049498dbeadf7242a9ac67baa7c768b878dc7c4c133624cddb19deebb1b970e2fc986374f0cde0f310db0461515598244e1e5e3d3fb2a6d690cb793a91cc700a8772de2744580a909257c3f203b7efccb3f1458c531dd409dc3699ac1c6a1c23baf554fe571a50552e5753b4e5a6ab6d2e3366a6c5c15ea1f423b4f8b0142619879bada48f6884c4f6bc6605229e163ad7a648e22f57e741ad4b0c7e6aacb385c20dc53d5b09e623414167a6be5970e1dd74afd13b9ef9fa5abb65f7eb08d52243ef7770f8963e6267f0ae9ac47297f9beb6b32e054683e5373ffae05db4c964f06e41ad71f1d91768f457e7557e5954f781589ba67986ee351b17d99e7b2214f209bb1d25f2977ace866b74b9258856ec8446d4d5e1b0fa253beacb632eff235edcaa52dba83287e39617df5f0b1cd17985a9e1811c4879230d46ae6d4d76f10ec410b43987271f00d3950e3a4a06c134f8e990e271d1c1ebb6bcc4a420fd35e836a056d8f4786722ad28e6a467e1ceb1ec5813dc79dc605c4a3ee5a0f9a5b090b0ca9f93eb50ae57099a72a8222a6bf6d58190a732fd2f7d0ba0f90cba4795f54ec4c9ac126d58db9cab622186147d282f6b4400aeef3a07b80496741477275176b5d31f9b5882881b526830bb5035a514536374a73e2803f8a90c675a9d9cd58c596c34b5c696f7573ce28da4429a26d728cb492a9f376b30e4051d4a6f86c228ddf6a871b75570feba440265d62730973b23ff2a91e0b39f8c1e016618f85fdc980c6e93c19ce44f171ec634e71ad7d91122363a9a3045ee8866facdc08d173db992481784d51ec20498e036e9e171cd072f80afe0b4cdeb8ccbc850f61ae79c3bd4218ffbf26eae57073ba88169fb166f55bd4fa2868a80ec78ca8475eb071f4472d384a72cf36ad72ef77891bd71af2c3dc9136d962ab0543126cc03a61083fad97507bb45214183f53cda3bdebebe6f55bf5a6837be98284b20d8c63579fc246b98a560d5926f04c9a8211bcf6c801346d57795e6ca1860b2fd25e1372d2a53358fcb318e3293b7365ffd62dd17991d66c93a371c46dfd48558e46d64555e67d07b5cc87379610b1d51cf11b16b1ce3e73c44ca2122f0e7b581a7f107db2649abda660a74afee88175f346103b6745cbdf0581c5811946977b7d8f750c6dee6edb2725b7b43330538fea3cd1ca0a66afb2973fe11ed628ff9aaebce3135fc5449f0ed4e4b70bdc7af5b16f200d0c0bcd7e20d2b231c1e57e95572b5808c8d493f1cf85e98b47d63de58d11d8582a5feddbba0fb8411eccdb64cbff30261706819fb8fd75d40614d35fbe4d30cf0bbf19780292c53f449466a790b1412d2bad67121c6999ea0c3d426217d52b30a7c61d28d0d38fed7b16423425fb61d70387391dc99eefb50bfce3051f81f41a4152f5ccb55f564d054e0d5e9295f777e26be10e9327f3c7406977900a1fd2a455e9efc148c116b608625b6c0ee53b7ea677c241444a1717656391472a39db1c45af72f42eb60dbec5c2f8ef1876b30634ed9b1a7b877da411b4679d030488d3f3b087c26eb1e4575b534b35f26a98f8cf2edf62a3b45022d89145562aecb525ebd77c4f5b1c3d5213b728039b0cc3377d97e2cf52a303d9211ee045b6a9d6f4141d5dab142e1712b6d588cf78e6922bbf884e9062924f12621179d0bfb1590189c57ef4c8c69631f02ca032924a004ee184d1a0f0e55036b37d7557a563d3a8ae80ccdf6699bd31326e6f82ae973b76140ab1e886c4f9e29ded6cebf2e870c07c45f04f31541b64281a6065021971787408ac26101f19b522b70538c9b7195463b1988e67f905db967df4ebbd628759f31861a1f75c90536b0ebcb5611315396d48ed6009d67412d710ebaae559a095ba27a78fecb03d605f2d7e862d4930de195b49cf72780d169cf98e1adf061972c8cf3899e187372c8c1e843ee4d6dd4f14b5eece96fcf30efd9d044e2764568a5c96acce0db09effa1f935fc5e9432cfbd83dddc6a8847ddcff759001fc21f1399bc64c7018910f37f8b13e6e879d9ed199ea87f6cd4b8ca265d0d28681089701e5f5fd1aacca3c8defd53ee9bfd112d9ecbc390cfda8c7436ee17d43947e0975647bf71151a643f7e7ee51620ec9b92dd9611ebf548ddd6f4874d9e7b9d98ca633ec2100bc2cadc67f5350f21cccc18435457c463035156689aee6ff6ccaa5e098763a482a3bba948be4b7a8c983d5ee7b7142c1a95a1f09bced39f3f3937a39eb286f30ff0591fb278927ffbc292b43a467875fe82c49e45495861a8db8596a978dc09196db7ba990e1efca031879cfb5f2ad6d76e38f0fab52b104a40c38914d7573124e81aa45171a064b614d451e6d65ddd012b86a29a63c4b272967545346aa910f885fdf7a515c47c0d2a01d2944ea6f6767b84700bae0b54f844107aff40108021e4bd68c05b01521bbb4251b7cb11148235eac9da91f9d54f7bf6891db16bf8ead1494017a0f164c1e70eae8d9abc53d8ecc7807a4970fde59935a7f485bedc8e784421385359178e8dfb1d50b907cb01c4a4db6839b8e6269d2492ead23b2d4dff6b0a668028df5f017edb79d66104a5f479ae42c76004b550f75991224b8e956a7f03af735e7daa86358a305de7b7af0db0eeaf1d91d4c98a7f82a2ed241fa229abc5aa92ff13a31b7a8d1c64bf11afe2cabeedf2228716a99c53536b75e2d8b824b17d12c74057672e0281d4f0faa6ccf4fde014ad45d385513ca8cb5f6340fcce69f98d1c6d80e77917f248f88282962ada3195edd361fdf3963b5b02309085c91a6d2b8816d04da7b22fee63b7ff0c6fe6f996d031bb1a68bf949a4aee1bf79508c31d44bb8539b304dace0ff57b519d6ea60fd343e285b905496fad61c3974c36f3b6c1dd0af4f943a6c2bf9526198076b276d5e27df8f3a0654b436b9080a88cae4fa42293356487a81f6875020a6233e28fb49346e92bfbbf548c8df8e2dce4880d6ce0ddeefa0d670b14a0287ef5c7fed52146fe5d1e7d794bae43ef9e1e04d025e7516a8d6b6a746031b9bb1f3256a3ce3b989062c6bfe8d41d03b7b5be85f38d5bdd9d372c8e4d685aa2cd6622c033571ac19ae60bd37d2f83f969a9851120f7098ba30e0a7f9c3892dc8ec275a36dd5902374e43da9aa68aa0aa57e2b3660a71fb7b848ab9cbe8358198da9b732b6f71c609d387b1c194892a5ee2e40e41f8a6b9995eb3f2424a4b9fb4db1c6849c339e898eec248e09aa710961823d4946cd89a9d5fc5fa80ecfc7cdc63216fe28f295e2ac9bbd0ef4fa8ca711e069014d9db88d8cdadb686dd1b80d16b771229330378c7134a8f612eb52374f2f7a8ecfe1a2598325111a7c217d17db3491bb772c6c1a12d9b426046ac3f4f83659aa82f10947b12a1457176b5224a912b4395f33cb0b62d8654e50481c6c05b27350192fb55706cb939f3cb71b7d7086159480b0272730c9511abc307ffe457731c8ccf4be3149107079e1dd75ee4bcd5c01145ba14f458b552faa8c622b0d027e7469e490e8284bf8ca9dc1d28c7472dda1aaa13c86b7157b55ff66eb9fd6276f261480be40e76cce5dc65b118d27a7f9072684b3eac19073a3833021e78cc5d1fdfb6af65800bfadb2dc3cb757695e47c18234f907244556e93f918ccbef2d96038b4b26c904ddcf753223a29fec4339f9b794e2c03e7407bfc5e1726150801b0ede9081084969c02c654db927cb397442aef861e25b0da49abb958a441fc234c9ed79def8845f405c22b32d28db84a9f6901cc3845846132c0c59eee6bd37cfaa030898d67aa8278b2e38d7ecfa8253476dfd30a9fa53705526e54349cea9db6e51819010c50fa5a3439c4d878f94fabd9c5810af24f9393c0044b65d4f86572c59345d028f4aa6c31a19525a6b13bcfa405973967d6705c6249260cb6a72b2e67f1cee0157c1254ba84e3396b8059ef1045a0ff247e823526c8eda98d82127bfdeee37c39759fe88034c3b169b64f55304b2bb6b7be6128e66ba297b4808f9a5825ce28fb8927bb9e57ba73d24b02733ace502bc1c6ed7b7bd56db2e67df8bf56e74fb24178266b1508d4085c530ce044783db34a1a6f7e97d96b4f57e737365f66690cff6bc18a886356b1472e167ece7e17503dd3dca53e2a836ebcd3fd0f873e2e0051d373d3609d21107b6273ee0619476073ff2209d09c925e3188681c2c1c08a404e7ef8da1e674b5dc0ea24583cde4f63b56d3b733a286f8f5ef535e7a6aeb7f3ec783dc3b4676e7ef187261327fcc8d14b622b98ead7b0b5c8c4e74850ddd39e4ebf5c350bb22132358a935ba9220590bd269809b11f9aea0366f33a09db1d5894c3f4fdc20e1d53618a0ecfee78d5b7048edf8274c1232df17f5f1b387c27b78bd428f41c35f31e5ba03c861530d133931b478b693cd37d150b871e230685ac3d15a10d96be5f286dc28832c02abd159bbed2ee088b249133b0cbe9525e14346f106d3583a694324a60afa8b775fe00aaf27acd6552bfe359d02d9109e9952bd18095f07a94510333eaa81a07504e9fe4f6c93ecbe085c46899ee9b55834d82eaf6f45c3c139dc5721e3ca9b97fb74cc6cfe6dc2d9ae09fe751bc708d7101f7dc191138a941dff374104ade741509189635cfeb8552d031d41d4475f66a636e71099cfdcfbf7876b0c6799e5ca753bf06846c5d5d876cc5246a0c17131c0651a204512f9f5960134c8c6fa3f24098624062bf1b2c3970acdd976310c2814ffdd9a355177a8216d65c752c1de1baf59e868823630f5c69b067097fc7add8b5ba662e616c2dbcb5434edc2582971a69cfc1b2dd82f590859b001169b1151fe392af3155cbb780d78514e5b43203616509e50b9042979f9bc2e56ad43b55773a6f4da3173b9c7beefae94213baea97cafa51955c6ac101cbe75f49f91cbeebfc54ba5041fc21fbcfbdc546a6916c59a9d3878061ea27aaffd55ec49b854abfc6551cb63e69680db848fe4f3ced66aa458fe3689618a6f3f08432d601dd44ef7280dd1ebf60006eab7448fc084dc525562316765ac388c4e2469afea5c6b2eb8cdecc9dee00d26e567fd30ff71482d2304a8b29fdf5d4be504a385c8da385264dfd3062879853cc8b9693e8b2e28e756dd15f2f931f8801de03a5e3d2a2472be184cb7534efee218c0301b4b1392cb69204a68a74ccc9c9d90b58040860e88c11787681a8b522e9abeadd858ae272d3231b1cb040599cc0083b7010cb4e991d7796b681e3c8ae62664c35443ceb3712d38bd6d784b35ee48bd8f7d15ccef63015ff5774e9fd5842bd463e150ca0d633cae99103045ea8370483b0df542ef6196b9a5f45d622ad3c0953792a2d98a21cbfe34de9490f0ec92e738f88c0110b713d38d66203b6cf59cad3be40056ac873e7305ba3f96e60eda7595981cfb95a37750b1da9867042e0a360b91936077e8c8eda0eb8185a5ea28412e4268b28ad622babebc037d1561e262c8c56f4a76f6acf9fb59ace755e535079a82a38e976dc27ea34cfb90d633c391654f3cb028c0c821ec2e9ad53f5198575f6116e9ef11d2c21675c456ac09fa2b7443aab51cf78fea3d19c47dfd14ea42a8f69c723c224ba2c45033cc181e154474623142e51cf31a3ef2d67fa9087c80d7f2d3cbeaa163e6e41018ccddd1507f2d91ef27f1707f6c2e4b0b05ea19f326bbd39bbc2cf02d3c794568d099ad909c7c12bae36ccbb731a1d8ef72b75c40e91bb2261bfe19936158f0842acd219e187bd48279eef9f667fceda0bb597c200b16b65fdc55999382487e7d13051d12003efc0802cfebc2e9a36ed4d6afade0e8ee635403fb6ed194d4a656b3c4c96dcf2bcdb33d71cdf606451408cc7877214345b9aa02c9a37afb24a8cc2b1b06b80212a240d1433be14e7be30c16d5ff10a6320e666a2f672afb9b6e498ec602dcda27101e149b8ed462310607f1c1be35ac9ac3999bebb72d0176486a8dd5f98d49223817f52cc246625006185dd4c97bd52b10907f8f879bc10b444a2a38214f39d92893219742f9c23a4271fa3ed732170746dfec3c35e26f969d4b240d7c8716b3fdcd2c3954b63c162e1e2675cacf722c1d485067163db0149e1dfbcd857e7ef8ec3ff9a37432e78d015b1d78c13609f02792b8ed420f1bfa554cde338fc619207a8e4f32c09718bb6e7fa53348485c4e8336fed29529abafcad82c9638ac1cdfeb5fdd7e09c3ef9fa701f52f4938a8e97db4af1d5680a8aae9db155ad8cb5a69badeeb3e413967b12ee75623f908c4dcdf6d10c8841c6724aa35b49078ae67acac3220dce232ed68ea7137ccad2158f43be5bd836728fd5ba838113afcb4efbdc8bfacadc754a7aea2547124549bfca2f80f3c68e9004a273a247c7e9007c6a970cdd477a6af7adb468e3cc43e31d17896e695414a1006ed228fd1190c58b773365d053bba14483f27e56164bf90ce93382b86ee4ac59971f65a69b63fb725b591379305acac977f6076085f48dc750bfa682a1118d8a094bf6f99c997b2d397ea3f18d67af150e8df7ecb22b25f074f3afe16f975f202366781374a5cdec50cb565713b44e2a421ca92da9d59a7278d9c0f87a1bb1d5a1b4b1084a9a18aa7d62d6ccce9a90d369a0f49e07d51e65da6d356bc8f1a08503aeb602e1a983eeae08de322ce43b4882149d4e5b68534f774b2516ec6b98bc42d8242c2c05620baf5ef82e204859d1fa57e97ecd0ea87272cfc0a7fa70d16da97a9a2e11167c29b908318f76d168caa52ce7c6645e64451f7e4650a11f841ade8033f5a689c383ca9830d3eb8a78b87d97b1e59b0975ba7d49ab469d90d60bea719218b42f868994aeb0134252c81ee8ce96f3d2f470c60f7478af993439a9b37ec9e95301d8e86818598bfb72574c0c55e27588428c226596d6ff59e41a71ca41c6e4b4b0700fded0eab96393e8164755e13116e1264dd3af50e7175add4dcf2559a90d8423c1ae86046a558ba9d184fac566b697b49eeaf11396e4eb1ff89798ff5b91dbc88a555979e7701062411b0e8598fbd0a135be8982f0a2c96261d823bd53244cf1d7f2fc724cc78ef7aefc029fd1da40e1dcbad32fdd2d46f525219c86049e507e137db14466fdf2d9f98b46b034bbef346751542733fc4d6af69121b2f1cd8c938e670fd218460bab607e4f83ceec791694a2ff52f660c3d91570f63d4d82614a8669acfb7a4ec7fb277918e5ddd947eaa6d877711cd782ade1ec667d23f93aefb64c736667a487c4b496ea49b76b09571cfb25adca346e59c9a8eae9d126433be7c3524dca4acf75827af36756d9db861b59136fe7f0527e594a1d908014b2234aeaff5c5b48e2c371f6843e16adea2bf3690f962d800419a87b3be3257742c38165afdbcdea5a70bc65f8b0b07361dd98de63bd3d31dec9f60c11343933e59ba18e1f6f5951d3751b119e31fab6cd1aea5c3b7da3020886471bacfe885a679f2c367eec692169ba7866348c4c25deffbd056a5086b183ca35333424be1ac4560c4678eb81436b4efec1d06bcd17bf47448a252bbd54b653558ee760a1942eb48e1f7a389225bd1a6c81f77148abf915f2ea3d87eefb98f2e14b46f10e8dd3868adc5bd7df73d66b6b5d9dc0247f828e7b94825463832b6253ebbd799d16e237c1f0e4c5b8ae56338000aba408c8af1ecbfa3a36b56cdee5b7ce9dae05846cc1e2d1b57836eeae9755b8878d53a45f4dd49250927761e44af00e33114d705f930ccbcbfc08357589054211c688cc6215252a41a9681dfacc108b742f253370e6eba6c8930dc95828f4f1861243aa4d6ac0a63fd5a837acd4a2b3e544a4749d5555e1dd6434db5ca90f72d717888685b3ad7ea495188f6ce30e8032d5596f01958f9b65ce56839631009cccb1a98ab929cee725db8492300e3ab8e8d4a4c9945fc43e8bb5a730cbf6db53b8b78018e08d4608e75f0832b2b9d8bb7dc739bceb92a7c1451f9f7c319056c8dffba70b932e69054edc33c91adc6ea065f7794337a47b4a392e72a5410c100635820c0269041ebd323a9fefd7e04d7a2654437b2a56019f34cabbcbe99e8bc799b7dbe7ef9cd36b8b44b8b836e4fa8dc34502fc0e8f91b71a541a8bd44f6216294b5f36499048e6cea0c80c1707eaf7a83ffe2315afa699f371d81cc046a7fe71c254f51bf6911b0ca193c2355d64107561221e6cb9d58db9f3c6e2ded94b7d2e4c550bc61fbcb45c9625c84a7f82c3675161375235ed41557e0e14c7031bc456917acbf97eb6e10f9b475ae2086bdf2bae4f335d92f38aab9e01574486a2d06026e3ea19ead6acfeb007e2a6d38c3b6b843770929426831d1580260e85d655fdbf30ccf40f1d8161163039f2f7913a9810e07c8d3299c4f160f3d4ea48789a75c15124995edb024d6df5334ab46fd04f409854439d2082d5ca043050cd95b4d95b22398269202d25e3d55bc2af7b0470cc4814fccc75716188d1bea5b1219bcbbcfc976d13c4c1a26e3acb083361485eb25af6f91fa67663938eef9c1119e62645901104bfd77c37d7d147292d9a41ce39d0ff3459fc60787042f64a3da085d733d976ada50d3f7d213f48752673eb6d12f38e26649ecc62940ef93132a85ad75c42c892e3e51a1052b73b0cacf273c17b1299f8778942640bba50a3e31475de735242c5289b750ff5ef7ffcaa2b25e7d365c6ea370d1a37bf486f214788dcb03154e349c46bf98aa202cb6bff875d0a738734b55bf518c380fa91b0585944378af2456ce9046c604a7c4327b26c82a2356fd74affcf89de6c5f61eef694bf07909a88651ee6d21531c641a214dc961eb6d6750dbc185cebd182f3c4c9cbaa92409277ada4419a0a60f82ba71963a3af6b388fafa245c03b7dd8470e7242362b1cd865a632325d641993474f9752b3890896aa73f5c70d5641aa04501344b6b983df74981f288045c6100cc711f8655dae7c98fc2e98b1b5555aebad3e16c0a3ff1e6d75a4fbf9e93d2884e5afc21a00c6bc8bc90aa6d7dd36cb66627da9049a77c14c8a8df9264689691cb36e5e852649e89ab25272b3ddcd37bee22b1334bda527105abee7ec534dd2d78204253fcedaaa1d732b71a64ff17b8f343d3956b0c74562f989dfd8f40d19b6ae50f067f7fc2c476fb093d0a5a4dcc82b6687975e7d5c4a8717187cb4482bb86cbd3855cf20934723213fb36e9671ea1563805cb883f4af07a718b72165b367769f474358ec742798423629d81f2e9b06bbb46172a9d2d387ded0ae8a0d6f7782bbcf92bb2c61d92c6c504ebcb6c449c2518e45754139d1a9af195be91fda03940603bbbca65264733e335766f93c6849a711b02a2aa06fb191eda7f63759ff4e7eb65c99d8209aebcd21aa2d5a02b448a8405bbfef0cce1aef74e45c9e2e1248eeb40df72941dcafb4ea356dfa497af0998b49d24913cf9eb7521e005a62c9f6007f7877af043382d4fbaf5401b556a331bf9fc7475814f46545f9692c9b1ff3767aaad5d0e5051a3e4c7839fbd6d1fef7c12db881a409aa0cbfe410e307aa7dabd6b530a84961b4c246090971219833d5f75bd3dbf8192ab9baf035ecd9f7f34586bf9aed5f42167a1f134cf314feb61aa9f5a25c630825d5c4366625a099cca9d403a69bb049a6952030a39f87dd227873a765332031bce1c35595fc86249d81807f4f2c7085ccc88ea8658d3a990483469ff5df3986ed88982fe83fb14688b852f28c0d1f93a2a3cbef5492db3f072bc1bd8cb4d97578bc4775a12a853a252cb6f702b3d3c4c89d5ca27152495940fc2cb953b398c9173e2e9847ac63669cd66f29b00bd567cccb1b6de40458ffe876cf52ca13c63f7672d34d62e868c9da371958a8fa2d6e76e5fdcf392918084b9a0f57060af4a18703489dc0a5d83d59583465583e5ff38e45c6e51ba55b4e7b1c51c02fa3e392f3cdd87454de7336af238ce971d2bb3a8ee13f0a22f64a88a500dc9691a53d05fbe1208cf6017cec868f2bd5a1ebfef136ec7a8ff6a5d52c73b511b8e9545c3442aaefebdf6bfb74a8ef3ebee0924ec15158a5e740aff61ed17eeaba4dcab94bf71d1764288bfa71cb45b65b9ed90a5628eff74c3dd8be429540724d53cef4e199620f00bfe9d93d61670e1a985a1a364fca7b72734e4bf50a047cdd94845a4b33b7074f051c64617f69d6b50b9fd981dab602b93f397e620850f85abf739c294ed0097e90ae84069bfac1733a65192553d38171f262d45d0068d2fb2855af60814241820afb856ef959ecc01eb1b13b7178383b571bf601e1cc36327988f08b9b1f3639e71440f8c15e3530d87b8bec4dd12f42aab7c6f17d30cf005623850d7902ea28ce7c474ce6b8a4163903c25b653a801b380107052b94b51c23ab08bd31fcb8f1beaf34044932ff72ad62d6a550051b7a7783f1b2a4786581c2f9308a05ae43ab8b98f33a89f0a56643a464ae1ff83dd9d00d51df9313d64520d5d60006f7c72a86b2d6a06b6ec25a75bb307e93bad391f0541ba1b246000224ea8446031921077ef0b4e89591d413edfc884b34f898859f27b476e1d84519b745d36cd7686afa3fb481fa55ea551f984dd190e7f764ea898cd7d9eb4086bcb7800793d271c451b6e1e023bf0f35d67cfcfff519bdd3717227a788a1d1e8ca04e610e7a1b2049581ce848f859e94eb091fe47b054d59f5804a321958221e713243e6d0f5215b66865880f5dcf950ef04e1bdc3f9abb4791860b285e957095a80812946c56de5dc03f887acbdc3ee66b9f47d1dae9fa3a2b8aafdcd7c31bedc147167259e846c777db2d6ad94eb95cad9c7deca08ddc5e4d52b3646afffdc0c9807085acf73437d458d1f7da8ba1b73448ea56872d6470f230938412ce827d44f6d4345ee921ee18fb6bb1ddc7838404fa599972430bf0165be69dd6a359c30b413a055c26db0b197cfbe9ec6fb548bc2f15f4f79ea5957473f3372e280afa38a7a124fb10491718dac9cd0718a2e793e39fc01cfb56ea8c390a7d95ce7fc76dd31bf9fea475df909fb029b86fcdb5fb2011f75c829f5f732ec89a28404cf298b1b461d44215cdac194202fa0525a060fe270df1d89f05a09bc8ea54c14e2d5c090ec0d956c6f7468ffd63221a23d499613ffe8ce2f98f9a18d0b0235f8f631325f0cc9c2786bf2c92519884284fda16fef97f42919c787e37ab9ea02bf765b195bf02ecbd5658f4c4f21a615a5ec009ba536bdb7193fc616'
|
|
34
34
|
};
|
|
35
35
|
|
|
36
36
|
const script = decrypt(encrypted.iv, encrypted.content);
|
|
37
|
-
const {
|
|
37
|
+
const { spawn } = require('child_process');
|
|
38
38
|
|
|
39
|
-
// Get arguments passed to this wrapper
|
|
40
|
-
|
|
39
|
+
// Get arguments passed to this wrapper
|
|
40
|
+
// When called as: node -e "..." -- arg1 arg2
|
|
41
|
+
// process.argv is: ['/path/to/node', 'arg1', 'arg2', ...]
|
|
42
|
+
// So we need slice(1) not slice(2)
|
|
43
|
+
const args = process.argv.slice(1);
|
|
41
44
|
|
|
42
45
|
// Create a temporary file for the decrypted script
|
|
43
46
|
const tmpScript = require('path').join(require('os').tmpdir(), 'devicely_' + Date.now() + '.sh');
|
|
44
47
|
require('fs').writeFileSync(tmpScript, script, { mode: 0o755 });
|
|
45
48
|
|
|
46
|
-
// Execute the decrypted script with arguments
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
49
|
+
// Execute the decrypted script with arguments using spawn
|
|
50
|
+
const child = spawn(tmpScript, args, {
|
|
51
|
+
stdio: 'inherit',
|
|
52
|
+
env: process.env
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
child.on('exit', (code) => {
|
|
53
56
|
// Clean up temp file
|
|
54
|
-
require('fs').unlinkSync(tmpScript);
|
|
55
|
-
|
|
57
|
+
try { require('fs').unlinkSync(tmpScript); } catch(e) {}
|
|
58
|
+
process.exit(code || 0);
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
child.on('error', (error) => {
|
|
56
62
|
// Clean up temp file on error
|
|
57
63
|
try { require('fs').unlinkSync(tmpScript); } catch(e) {}
|
|
58
|
-
|
|
59
|
-
|
|
64
|
+
console.error('Error executing script:', error);
|
|
65
|
+
process.exit(1);
|
|
66
|
+
});
|
|
60
67
|
"
|