diff --git a/package-lock.json b/package-lock.json index f583451eb..fb1fb810d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11287,9 +11287,9 @@ } }, "node_modules/vite": { - "version": "5.4.19", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.19.tgz", - "integrity": "sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==", + "version": "5.4.20", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.20.tgz", + "integrity": "sha512-j3lYzGC3P+B5Yfy/pfKNgVEg4+UtcIJcVRt2cDjIOmhLourAqPqf8P7acgxeiSgUB7E3p2P8/3gNIgDLpwzs4g==", "dev": true, "license": "MIT", "dependencies": { diff --git a/src/transaction/transaction.spec.ts b/src/transaction/transaction.spec.ts index 49a305987..b25c5b9fb 100644 --- a/src/transaction/transaction.spec.ts +++ b/src/transaction/transaction.spec.ts @@ -787,12 +787,12 @@ const resourcePopulationTests = (version: 8 | 9) => () => { let alice: Address & Account describe('accounts', () => { - test('addressBalance: invalid Account reference', async () => { + test('addressBalance: unavailable Account', async () => { const { testAccount } = fixture.context alice = testAccount await expect( appClient.send.call({ method: 'addressBalance', args: [testAccount.toString()], populateAppCallResources: false }), - ).rejects.toThrow('invalid Account reference') + ).rejects.toThrow('unavailable Account') }) test('addressBalance', async () => { @@ -846,7 +846,7 @@ const resourcePopulationTests = (version: 8 | 9) => () => { }) describe('cross-product references', () => { - const hasAssetErrorMsg = version === 8 ? 'invalid Account reference' : 'unavailable Account' + const hasAssetErrorMsg = version === 8 ? 'unavailable Account' : 'unavailable Account' test(`hasAsset: ${hasAssetErrorMsg}`, async () => { const { testAccount } = fixture.context @@ -885,14 +885,14 @@ const resourcePopulationTests = (version: 8 | 9) => () => { }) describe('sendTransaction', () => { - test('addressBalance: invalid Account reference', async () => { + test('addressBalance: unavailable Account', async () => { await expect( appClient.send.call({ method: 'addressBalance', args: [algosdk.generateAccount().addr.toString()], populateAppCallResources: false, }), - ).rejects.toThrow('invalid Account reference') + ).rejects.toThrow('unavailable Account') }) test('addressBalance', async () => { @@ -996,11 +996,15 @@ describe('Resource population: meta', () => { let externalClient: AppClient + let testAccount: algosdk.Address & algosdk.Account + beforeEach(fixture.newScope) beforeAll(async () => { await fixture.newScope() - const { algorand, testAccount } = fixture.context + const { algorand, testAccount: ta } = fixture.context + testAccount = ta + Config.configure({ populateAppCallResources: true }) const factory = algorand.client.getAppFactory({ @@ -1072,6 +1076,22 @@ describe('Resource population: meta', () => { expect(res.transaction.applicationCall?.accounts?.length || 0).toBe(0) }) + + test('create box in new app', async () => { + const { algorand } = fixture + + await externalClient.fundAppAccount({ amount: (200_000).microAlgo() }) + + const result = await externalClient.send.call({ + method: 'createBoxInNewApp', + args: [algorand.createTransaction.payment({ sender: testAccount, receiver: externalClient.appAddress, amount: (1).algo() })], + staticFee: (4_000).microAlgo(), + }) + + const boxRef = result.transaction.applicationCall?.boxes?.[0] + expect(boxRef).toBeDefined() + expect(boxRef?.appIndex).toBe(0n) + }) }) describe('abi return', () => { diff --git a/tests/example-contracts/resource-packer/artifacts/ExternalApp.arc32.json b/tests/example-contracts/resource-packer/artifacts/ExternalApp.arc32.json index 88424a709..c8d65b3fe 100644 --- a/tests/example-contracts/resource-packer/artifacts/ExternalApp.arc32.json +++ b/tests/example-contracts/resource-packer/artifacts/ExternalApp.arc32.json @@ -30,6 +30,11 @@ "no_op": "CALL" } }, + "createBoxInNewApp(pay)void": { + "call_config": { + "no_op": "CALL" + } + }, "createApplication()void": { "call_config": { "no_op": "CREATE" @@ -74,7 +79,7 @@ } }, "source": { - "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCgovLyBUaGlzIFRFQUwgd2FzIGdlbmVyYXRlZCBieSBURUFMU2NyaXB0IHYwLjg3LjAKLy8gaHR0cHM6Ly9naXRodWIuY29tL2FsZ29yYW5kZm91bmRhdGlvbi9URUFMU2NyaXB0CgovLyBUaGlzIGNvbnRyYWN0IGlzIGNvbXBsaWFudCB3aXRoIGFuZC9vciBpbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgQVJDczogWyBBUkM0IF0KCi8vIFRoZSBmb2xsb3dpbmcgdGVuIGxpbmVzIG9mIFRFQUwgaGFuZGxlIGluaXRpYWwgcHJvZ3JhbSBmbG93Ci8vIFRoaXMgcGF0dGVybiBpcyB1c2VkIHRvIG1ha2UgaXQgZWFzeSBmb3IgYW55b25lIHRvIHBhcnNlIHRoZSBzdGFydCBvZiB0aGUgcHJvZ3JhbSBhbmQgZGV0ZXJtaW5lIGlmIGEgc3BlY2lmaWMgYWN0aW9uIGlzIGFsbG93ZWQKLy8gSGVyZSwgYWN0aW9uIHJlZmVycyB0byB0aGUgT25Db21wbGV0ZSBpbiBjb21iaW5hdGlvbiB3aXRoIHdoZXRoZXIgdGhlIGFwcCBpcyBiZWluZyBjcmVhdGVkIG9yIGNhbGxlZAovLyBFdmVyeSBwb3NzaWJsZSBhY3Rpb24gZm9yIHRoaXMgY29udHJhY3QgaXMgcmVwcmVzZW50ZWQgaW4gdGhlIHN3aXRjaCBzdGF0ZW1lbnQKLy8gSWYgdGhlIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGNvbnRyYWN0LCBpdHMgcmVzcGVjdGl2ZSBicmFuY2ggd2lsbCBiZSAiKk5PVF9JTVBMRU1FTlRFRCIgd2hpY2gganVzdCBjb250YWlucyAiZXJyIgp0eG4gQXBwbGljYXRpb25JRAohCmludCA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpjYWxsX09wdEluICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKmNyZWF0ZV9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRAoKKk5PVF9JTVBMRU1FTlRFRDoKCWVycgoKLy8gb3B0SW5Ub0FwcGxpY2F0aW9uKCl2b2lkCiphYmlfcm91dGVfb3B0SW5Ub0FwcGxpY2F0aW9uOgoJLy8gZXhlY3V0ZSBvcHRJblRvQXBwbGljYXRpb24oKXZvaWQKCWNhbGxzdWIgb3B0SW5Ub0FwcGxpY2F0aW9uCglpbnQgMQoJcmV0dXJuCgovLyBvcHRJblRvQXBwbGljYXRpb24oKTogdm9pZApvcHRJblRvQXBwbGljYXRpb246Cglwcm90byAwIDAKCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9yZXNvdXJjZS1wYWNrZXIvcmVzb3VyY2UtcGFja2VyLmFsZ28udHM6MTIKCS8vIHRoaXMubG9jYWxLZXkodGhpcy50eG4uc2VuZGVyKS52YWx1ZSA9ICdmb28nCgl0eG4gU2VuZGVyCglieXRlIDB4NmM2ZjYzNjE2YzRiNjU3OSAvLyAibG9jYWxLZXkiCglieXRlIDB4NjY2ZjZmIC8vICJmb28iCglhcHBfbG9jYWxfcHV0CglyZXRzdWIKCi8vIGR1bW15KCl2b2lkCiphYmlfcm91dGVfZHVtbXk6CgkvLyBleGVjdXRlIGR1bW15KCl2b2lkCgljYWxsc3ViIGR1bW15CglpbnQgMQoJcmV0dXJuCgovLyBkdW1teSgpOiB2b2lkCmR1bW15OgoJcHJvdG8gMCAwCglyZXRzdWIKCi8vIGVycm9yKCl2b2lkCiphYmlfcm91dGVfZXJyb3I6CgkvLyBleGVjdXRlIGVycm9yKCl2b2lkCgljYWxsc3ViIGVycm9yCglpbnQgMQoJcmV0dXJuCgovLyBlcnJvcigpOiB2b2lkCmVycm9yOgoJcHJvdG8gMCAwCgllcnIKCi8vIGJveFdpdGhQYXltZW50KHBheSl2b2lkCiphYmlfcm91dGVfYm94V2l0aFBheW1lbnQ6CgkvLyBfcGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50IDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludCBwYXkKCT09Cglhc3NlcnQKCgkvLyBleGVjdXRlIGJveFdpdGhQYXltZW50KHBheSl2b2lkCgljYWxsc3ViIGJveFdpdGhQYXltZW50CglpbnQgMQoJcmV0dXJuCgovLyBib3hXaXRoUGF5bWVudChfcGF5bWVudDogUGF5VHhuKTogdm9pZApib3hXaXRoUGF5bWVudDoKCXByb3RvIDEgMAoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL3Jlc291cmNlLXBhY2tlci9yZXNvdXJjZS1wYWNrZXIuYWxnby50czoyMgoJLy8gdGhpcy5ib3hLZXkudmFsdWUgPSAnZm9vJwoJYnl0ZSAweDYyNmY3ODRiNjU3OSAvLyAiYm94S2V5IgoJZHVwCglib3hfZGVsCglwb3AKCWJ5dGUgMHg2NjZmNmYgLy8gImZvbyIKCWJveF9wdXQKCXJldHN1YgoKLy8gY3JlYXRlQXNzZXQoKXZvaWQKKmFiaV9yb3V0ZV9jcmVhdGVBc3NldDoKCS8vIGV4ZWN1dGUgY3JlYXRlQXNzZXQoKXZvaWQKCWNhbGxzdWIgY3JlYXRlQXNzZXQKCWludCAxCglyZXR1cm4KCi8vIGNyZWF0ZUFzc2V0KCk6IHZvaWQKY3JlYXRlQXNzZXQ6Cglwcm90byAwIDAKCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9yZXNvdXJjZS1wYWNrZXIvcmVzb3VyY2UtcGFja2VyLmFsZ28udHM6MjYKCS8vIHRoaXMuYXNhLnZhbHVlID0gc2VuZEFzc2V0Q3JlYXRpb24oewoJLy8gICAgICAgY29uZmlnQXNzZXRUb3RhbDogMSwKCS8vICAgICB9KQoJYnl0ZSAweDYxNzM2MSAvLyAiYXNhIgoJaXR4bl9iZWdpbgoJaW50IGFjZmcKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9yZXNvdXJjZS1wYWNrZXIvcmVzb3VyY2UtcGFja2VyLmFsZ28udHM6MjcKCS8vIGNvbmZpZ0Fzc2V0VG90YWw6IDEKCWludCAxCglpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0VG90YWwKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnQgMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIENyZWF0ZWRBc3NldElECglhcHBfZ2xvYmFsX3B1dAoJcmV0c3ViCgovLyBzZW5kZXJBc3NldEJhbGFuY2UoKXZvaWQKKmFiaV9yb3V0ZV9zZW5kZXJBc3NldEJhbGFuY2U6CgkvLyBleGVjdXRlIHNlbmRlckFzc2V0QmFsYW5jZSgpdm9pZAoJY2FsbHN1YiBzZW5kZXJBc3NldEJhbGFuY2UKCWludCAxCglyZXR1cm4KCi8vIHNlbmRlckFzc2V0QmFsYW5jZSgpOiB2b2lkCnNlbmRlckFzc2V0QmFsYW5jZToKCXByb3RvIDAgMAoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL3Jlc291cmNlLXBhY2tlci9yZXNvdXJjZS1wYWNrZXIuYWxnby50czozMgoJLy8gYXNzZXJ0KCF0aGlzLnR4bi5zZW5kZXIuaXNPcHRlZEluVG9Bc3NldCh0aGlzLmFzYS52YWx1ZSkpCgl0eG4gU2VuZGVyCglieXRlIDB4NjE3MzYxIC8vICJhc2EiCglhcHBfZ2xvYmFsX2dldAoJYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCglzd2FwCglwb3AKCSEKCWFzc2VydAoJcmV0c3ViCgoqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uOgoJaW50IDEKCXJldHVybgoKKmNyZWF0ZV9Ob09wOgoJbWV0aG9kICJjcmVhdGVBcHBsaWNhdGlvbigpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb24KCWVycgoKKmNhbGxfTm9PcDoKCW1ldGhvZCAiZHVtbXkoKXZvaWQiCgltZXRob2QgImVycm9yKCl2b2lkIgoJbWV0aG9kICJib3hXaXRoUGF5bWVudChwYXkpdm9pZCIKCW1ldGhvZCAiY3JlYXRlQXNzZXQoKXZvaWQiCgltZXRob2QgInNlbmRlckFzc2V0QmFsYW5jZSgpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfZHVtbXkgKmFiaV9yb3V0ZV9lcnJvciAqYWJpX3JvdXRlX2JveFdpdGhQYXltZW50ICphYmlfcm91dGVfY3JlYXRlQXNzZXQgKmFiaV9yb3V0ZV9zZW5kZXJBc3NldEJhbGFuY2UKCWVycgoKKmNhbGxfT3B0SW46CgltZXRob2QgIm9wdEluVG9BcHBsaWNhdGlvbigpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfb3B0SW5Ub0FwcGxpY2F0aW9uCgllcnI=", + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAxIDAgNgpieXRlY2Jsb2NrIDB4NjI2Zjc4NGI2NTc5IDB4Yjg0NDdiMzYgMHg2NjZmNmYgMHg2MTczNjEgMHgKCi8vIFRoaXMgVEVBTCB3YXMgZ2VuZXJhdGVkIGJ5IFRFQUxTY3JpcHQgdjAuMTA2LjMKLy8gaHR0cHM6Ly9naXRodWIuY29tL2FsZ29yYW5kZm91bmRhdGlvbi9URUFMU2NyaXB0CgovLyBUaGlzIGNvbnRyYWN0IGlzIGNvbXBsaWFudCB3aXRoIGFuZC9vciBpbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgQVJDczogWyBBUkM0IF0KCi8vIFRoZSBmb2xsb3dpbmcgdGVuIGxpbmVzIG9mIFRFQUwgaGFuZGxlIGluaXRpYWwgcHJvZ3JhbSBmbG93Ci8vIFRoaXMgcGF0dGVybiBpcyB1c2VkIHRvIG1ha2UgaXQgZWFzeSBmb3IgYW55b25lIHRvIHBhcnNlIHRoZSBzdGFydCBvZiB0aGUgcHJvZ3JhbSBhbmQgZGV0ZXJtaW5lIGlmIGEgc3BlY2lmaWMgYWN0aW9uIGlzIGFsbG93ZWQKLy8gSGVyZSwgYWN0aW9uIHJlZmVycyB0byB0aGUgT25Db21wbGV0ZSBpbiBjb21iaW5hdGlvbiB3aXRoIHdoZXRoZXIgdGhlIGFwcCBpcyBiZWluZyBjcmVhdGVkIG9yIGNhbGxlZAovLyBFdmVyeSBwb3NzaWJsZSBhY3Rpb24gZm9yIHRoaXMgY29udHJhY3QgaXMgcmVwcmVzZW50ZWQgaW4gdGhlIHN3aXRjaCBzdGF0ZW1lbnQKLy8gSWYgdGhlIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGNvbnRyYWN0LCBpdHMgcmVzcGVjdGl2ZSBicmFuY2ggd2lsbCBiZSAiKk5PVF9JTVBMRU1FTlRFRCIgd2hpY2gganVzdCBjb250YWlucyAiZXJyIgp0eG4gQXBwbGljYXRpb25JRAohCmludGMgMiAvLyA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpjYWxsX09wdEluICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKmNyZWF0ZV9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRAoKKk5PVF9JTVBMRU1FTlRFRDoKCS8vIFRoZSByZXF1ZXN0ZWQgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGlzIGNvbnRyYWN0LiBBcmUgeW91IHVzaW5nIHRoZSBjb3JyZWN0IE9uQ29tcGxldGU/IERpZCB5b3Ugc2V0IHlvdXIgYXBwIElEPwoJZXJyCgovLyBvcHRJblRvQXBwbGljYXRpb24oKXZvaWQKKmFiaV9yb3V0ZV9vcHRJblRvQXBwbGljYXRpb246CgkvLyBleGVjdXRlIG9wdEluVG9BcHBsaWNhdGlvbigpdm9pZAoJY2FsbHN1YiBvcHRJblRvQXBwbGljYXRpb24KCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIG9wdEluVG9BcHBsaWNhdGlvbigpOiB2b2lkCm9wdEluVG9BcHBsaWNhdGlvbjoKCXByb3RvIDAgMAoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL3Jlc291cmNlLXBhY2tlci9yZXNvdXJjZS1wYWNrZXIuYWxnby50czoxMgoJLy8gdGhpcy5sb2NhbEtleSh0aGlzLnR4bi5zZW5kZXIpLnZhbHVlID0gJ2ZvbycKCXR4biBTZW5kZXIKCXB1c2hieXRlcyAweDZjNmY2MzYxNmM0YjY1NzkgLy8gImxvY2FsS2V5IgoJYnl0ZWMgMiAvLyAgImZvbyIKCWFwcF9sb2NhbF9wdXQKCXJldHN1YgoKLy8gZHVtbXkoKXZvaWQKKmFiaV9yb3V0ZV9kdW1teToKCS8vIGV4ZWN1dGUgZHVtbXkoKXZvaWQKCWNhbGxzdWIgZHVtbXkKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIGR1bW15KCk6IHZvaWQKZHVtbXk6Cglwcm90byAwIDAKCXJldHN1YgoKLy8gZXJyb3IoKXZvaWQKKmFiaV9yb3V0ZV9lcnJvcjoKCS8vIGV4ZWN1dGUgZXJyb3IoKXZvaWQKCWNhbGxzdWIgZXJyb3IKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIGVycm9yKCk6IHZvaWQKZXJyb3I6Cglwcm90byAwIDAKCgkvLyBTb21lIGVycm9yCgllcnIKCXJldHN1YgoKLy8gYm94V2l0aFBheW1lbnQocGF5KXZvaWQKKmFiaV9yb3V0ZV9ib3hXaXRoUGF5bWVudDoKCS8vIF9wYXltZW50OiBwYXkKCXR4biBHcm91cEluZGV4CglpbnRjIDAgLy8gMQoJLQoJZHVwCglndHhucyBUeXBlRW51bQoJaW50YyAwIC8vICBwYXkKCT09CgoJLy8gYXJndW1lbnQgMCAoX3BheW1lbnQpIGZvciBib3hXaXRoUGF5bWVudCBtdXN0IGJlIGEgcGF5IHRyYW5zYWN0aW9uCglhc3NlcnQKCgkvLyBleGVjdXRlIGJveFdpdGhQYXltZW50KHBheSl2b2lkCgljYWxsc3ViIGJveFdpdGhQYXltZW50CglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyBib3hXaXRoUGF5bWVudChfcGF5bWVudDogUGF5VHhuKTogdm9pZApib3hXaXRoUGF5bWVudDoKCXByb3RvIDEgMAoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL3Jlc291cmNlLXBhY2tlci9yZXNvdXJjZS1wYWNrZXIuYWxnby50czoyMgoJLy8gdGhpcy5ib3hLZXkudmFsdWUgPSAnZm9vJwoJYnl0ZWMgMCAvLyAgImJveEtleSIKCWR1cAoJYm94X2RlbAoJcG9wCglieXRlYyAyIC8vICAiZm9vIgoJYm94X3B1dAoJcmV0c3ViCgovLyBjcmVhdGVBc3NldCgpdm9pZAoqYWJpX3JvdXRlX2NyZWF0ZUFzc2V0OgoJLy8gZXhlY3V0ZSBjcmVhdGVBc3NldCgpdm9pZAoJY2FsbHN1YiBjcmVhdGVBc3NldAoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gY3JlYXRlQXNzZXQoKTogdm9pZApjcmVhdGVBc3NldDoKCXByb3RvIDAgMAoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL3Jlc291cmNlLXBhY2tlci9yZXNvdXJjZS1wYWNrZXIuYWxnby50czoyNgoJLy8gdGhpcy5hc2EudmFsdWUgPSBzZW5kQXNzZXRDcmVhdGlvbih7CgkvLyAgICAgICBjb25maWdBc3NldFRvdGFsOiAxLAoJLy8gICAgIH0pCglieXRlYyAzIC8vICAiYXNhIgoJaXR4bl9iZWdpbgoJcHVzaGludCAzIC8vIGFjZmcKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9yZXNvdXJjZS1wYWNrZXIvcmVzb3VyY2UtcGFja2VyLmFsZ28udHM6MjcKCS8vIGNvbmZpZ0Fzc2V0VG90YWw6IDEKCWludGMgMCAvLyAxCglpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0VG90YWwKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDEgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIENyZWF0ZWRBc3NldElECglhcHBfZ2xvYmFsX3B1dAoJcmV0c3ViCgovLyBzZW5kZXJBc3NldEJhbGFuY2UoKXZvaWQKKmFiaV9yb3V0ZV9zZW5kZXJBc3NldEJhbGFuY2U6CgkvLyBleGVjdXRlIHNlbmRlckFzc2V0QmFsYW5jZSgpdm9pZAoJY2FsbHN1YiBzZW5kZXJBc3NldEJhbGFuY2UKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIHNlbmRlckFzc2V0QmFsYW5jZSgpOiB2b2lkCnNlbmRlckFzc2V0QmFsYW5jZToKCXByb3RvIDAgMAoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL3Jlc291cmNlLXBhY2tlci9yZXNvdXJjZS1wYWNrZXIuYWxnby50czozMgoJLy8gYXNzZXJ0KCF0aGlzLnR4bi5zZW5kZXIuaXNPcHRlZEluVG9Bc3NldCh0aGlzLmFzYS52YWx1ZSkpCgl0eG4gU2VuZGVyCglieXRlYyAzIC8vICAiYXNhIgoJYXBwX2dsb2JhbF9nZXQKCWFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQoJc3dhcAoJcG9wCgkhCglhc3NlcnQKCXJldHN1YgoKLy8gY3JlYXRlQm94SW5OZXdBcHAocGF5KXZvaWQKKmFiaV9yb3V0ZV9jcmVhdGVCb3hJbk5ld0FwcDoKCS8vIG1iclBheW1lbnQ6IHBheQoJdHhuIEdyb3VwSW5kZXgKCWludGMgMCAvLyAxCgktCglkdXAKCWd0eG5zIFR5cGVFbnVtCglpbnRjIDAgLy8gIHBheQoJPT0KCgkvLyBhcmd1bWVudCAwIChtYnJQYXltZW50KSBmb3IgY3JlYXRlQm94SW5OZXdBcHAgbXVzdCBiZSBhIHBheSB0cmFuc2FjdGlvbgoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBjcmVhdGVCb3hJbk5ld0FwcChwYXkpdm9pZAoJY2FsbHN1YiBjcmVhdGVCb3hJbk5ld0FwcAoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gY3JlYXRlQm94SW5OZXdBcHAobWJyUGF5bWVudDogUGF5VHhuKTogdm9pZApjcmVhdGVCb3hJbk5ld0FwcDoKCXByb3RvIDEgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyA0IC8vIDB4CglkdXAKCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9yZXNvdXJjZS1wYWNrZXIvcmVzb3VyY2UtcGFja2VyLmFsZ28udHM6MzYKCS8vIHZlcmlmeVBheVR4bihtYnJQYXltZW50LCB7CgkvLyAgICAgICByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywKCS8vICAgICB9KQoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9yZXNvdXJjZS1wYWNrZXIvcmVzb3VyY2UtcGFja2VyLmFsZ28udHM6NDAKCS8vIHNlbmRNZXRob2RDYWxsPFtdLCB2b2lkPih7CgkvLyAgICAgICBuYW1lOiAnY3JlYXRlQXBwbGljYXRpb24nLAoJLy8gICAgICAgYXBwcm92YWxQcm9ncmFtOiBJbm5lckJveEFwcC5hcHByb3ZhbFByb2dyYW0oKSwKCS8vICAgICAgIGNsZWFyU3RhdGVQcm9ncmFtOiBJbm5lckJveEFwcC5jbGVhclByb2dyYW0oKSwKCS8vICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAxIC8vICBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9yZXNvdXJjZS1wYWNrZXIvcmVzb3VyY2UtcGFja2VyLmFsZ28udHM6NDIKCS8vIGFwcHJvdmFsUHJvZ3JhbTogSW5uZXJCb3hBcHAuYXBwcm92YWxQcm9ncmFtKCkKCXB1c2hieXRlcyAweDBhMjAwMTAxMzExODE0ODEwNjBiMzExOTA4OGQwYzAwMjgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMWEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwODgwMDAyMjI0MzhhMDAwMDgwMDg2NTZkNzA3NDc5NDI2Zjc4ODEwMGI5NDg4OTIyNDM4MDA0Yjg0NDdiMzYzNjFhMDA4ZTAxZmZmMTAwODAwNGE2OGJkMjk3MzYxYTAwOGUwMWZmY2MwMAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9yZXNvdXJjZS1wYWNrZXIvcmVzb3VyY2UtcGFja2VyLmFsZ28udHM6NDMKCS8vIGNsZWFyU3RhdGVQcm9ncmFtOiBJbm5lckJveEFwcC5jbGVhclByb2dyYW0oKQoJcHVzaGJ5dGVzIDB4MGEKCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDEgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvcmVzb3VyY2UtcGFja2VyL3Jlc291cmNlLXBhY2tlci5hbGdvLnRzOjQ2CgkvLyBhcHBJZCA9IHRoaXMuaXR4bi5jcmVhdGVkQXBwbGljYXRpb25JRAoJaXR4biBDcmVhdGVkQXBwbGljYXRpb25JRAoJZnJhbWVfYnVyeSAwIC8vIGFwcElkOiB1aW50NjQKCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9yZXNvdXJjZS1wYWNrZXIvcmVzb3VyY2UtcGFja2VyLmFsZ28udHM6NDcKCS8vIGFwcEFkZHIgPSBhcHBJZC5hZGRyZXNzCglmcmFtZV9kaWcgMCAvLyBhcHBJZDogdWludDY0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCWZyYW1lX2J1cnkgMSAvLyBhcHBBZGRyOiBhZGRyZXNzCgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvcmVzb3VyY2UtcGFja2VyL3Jlc291cmNlLXBhY2tlci5hbGdvLnRzOjQ5CgkvLyBzZW5kUGF5bWVudCh7IHJlY2VpdmVyOiBhcHBBZGRyLCBhbW91bnQ6IG1iclBheW1lbnQuYW1vdW50IH0pCglpdHhuX2JlZ2luCglpbnRjIDAgLy8gIHBheQoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL3Jlc291cmNlLXBhY2tlci9yZXNvdXJjZS1wYWNrZXIuYWxnby50czo0OQoJLy8gcmVjZWl2ZXI6IGFwcEFkZHIKCWZyYW1lX2RpZyAxIC8vIGFwcEFkZHI6IGFkZHJlc3MKCWl0eG5fZmllbGQgUmVjZWl2ZXIKCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9yZXNvdXJjZS1wYWNrZXIvcmVzb3VyY2UtcGFja2VyLmFsZ28udHM6NDkKCS8vIGFtb3VudDogbWJyUGF5bWVudC5hbW91bnQKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJaXR4bl9maWVsZCBBbW91bnQKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDEgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvcmVzb3VyY2UtcGFja2VyL3Jlc291cmNlLXBhY2tlci5hbGdvLnRzOjUxCgkvLyBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgSW5uZXJCb3hBcHAucHJvdG90eXBlLmNyZWF0ZUVtcHR5Qm94Pih7CgkvLyAgICAgICBhcHBsaWNhdGlvbklEOiBhcHBJZCwKCS8vICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglwdXNoYnl0ZXMgMHhhNjhiZDI5NyAvLyBtZXRob2QgImNyZWF0ZUVtcHR5Qm94KCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9yZXNvdXJjZS1wYWNrZXIvcmVzb3VyY2UtcGFja2VyLmFsZ28udHM6NTIKCS8vIGFwcGxpY2F0aW9uSUQ6IGFwcElkCglmcmFtZV9kaWcgMCAvLyBhcHBJZDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDEgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglyZXRzdWIKCiphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb246CglpbnRjIDAgLy8gMQoJcmV0dXJuCgoqY3JlYXRlX05vT3A6CglieXRlYyAxIC8vICBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4YTMwY2U3ZmYgLy8gbWV0aG9kICJkdW1teSgpdm9pZCIKCXB1c2hieXRlcyAweDQ0ZDBkYTBkIC8vIG1ldGhvZCAiZXJyb3IoKXZvaWQiCglwdXNoYnl0ZXMgMHhkNjFlNDI1NSAvLyBtZXRob2QgImJveFdpdGhQYXltZW50KHBheSl2b2lkIgoJcHVzaGJ5dGVzIDB4YTY1YWFiZmUgLy8gbWV0aG9kICJjcmVhdGVBc3NldCgpdm9pZCIKCXB1c2hieXRlcyAweDY1NWM1ZTAyIC8vIG1ldGhvZCAic2VuZGVyQXNzZXRCYWxhbmNlKCl2b2lkIgoJcHVzaGJ5dGVzIDB4MWE0NTZhY2EgLy8gbWV0aG9kICJjcmVhdGVCb3hJbk5ld0FwcChwYXkpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfZHVtbXkgKmFiaV9yb3V0ZV9lcnJvciAqYWJpX3JvdXRlX2JveFdpdGhQYXltZW50ICphYmlfcm91dGVfY3JlYXRlQXNzZXQgKmFiaV9yb3V0ZV9zZW5kZXJBc3NldEJhbGFuY2UgKmFiaV9yb3V0ZV9jcmVhdGVCb3hJbk5ld0FwcAoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycgoKKmNhbGxfT3B0SW46CglwdXNoYnl0ZXMgMHgwMWEzYTNmZiAvLyBtZXRob2QgIm9wdEluVG9BcHBsaWNhdGlvbigpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfb3B0SW5Ub0FwcGxpY2F0aW9uCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNhbGwgT3B0SW4KCWVycg==", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" }, "contract": { @@ -128,6 +133,18 @@ "type": "void" } }, + { + "name": "createBoxInNewApp", + "args": [ + { + "name": "mbrPayment", + "type": "pay" + } + ], + "returns": { + "type": "void" + } + }, { "name": "createApplication", "args": [], diff --git a/tests/example-contracts/resource-packer/artifacts/InnerBoxApp.arc32.json b/tests/example-contracts/resource-packer/artifacts/InnerBoxApp.arc32.json new file mode 100644 index 000000000..4826d7298 --- /dev/null +++ b/tests/example-contracts/resource-packer/artifacts/InnerBoxApp.arc32.json @@ -0,0 +1,65 @@ +{ + "hints": { + "createEmptyBox()void": { + "call_config": { + "no_op": "CALL" + } + }, + "createApplication()void": { + "call_config": { + "no_op": "CREATE" + } + } + }, + "bare_call_config": { + "no_op": "NEVER", + "opt_in": "NEVER", + "close_out": "NEVER", + "update_application": "NEVER", + "delete_application": "NEVER" + }, + "schema": { + "local": { + "declared": {}, + "reserved": {} + }, + "global": { + "declared": {}, + "reserved": {} + } + }, + "state": { + "global": { + "num_byte_slices": 0, + "num_uints": 0 + }, + "local": { + "num_byte_slices": 0, + "num_uints": 0 + } + }, + "source": { + "approval": "I3ByYWdtYSB2ZXJzaW9uIDEwCmludGNibG9jayAxCgovLyBUaGlzIFRFQUwgd2FzIGdlbmVyYXRlZCBieSBURUFMU2NyaXB0IHYwLjEwNi4zCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGdvcmFuZGZvdW5kYXRpb24vVEVBTFNjcmlwdAoKLy8gVGhpcyBjb250cmFjdCBpcyBjb21wbGlhbnQgd2l0aCBhbmQvb3IgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIEFSQ3M6IFsgQVJDNCBdCgovLyBUaGUgZm9sbG93aW5nIHRlbiBsaW5lcyBvZiBURUFMIGhhbmRsZSBpbml0aWFsIHByb2dyYW0gZmxvdwovLyBUaGlzIHBhdHRlcm4gaXMgdXNlZCB0byBtYWtlIGl0IGVhc3kgZm9yIGFueW9uZSB0byBwYXJzZSB0aGUgc3RhcnQgb2YgdGhlIHByb2dyYW0gYW5kIGRldGVybWluZSBpZiBhIHNwZWNpZmljIGFjdGlvbiBpcyBhbGxvd2VkCi8vIEhlcmUsIGFjdGlvbiByZWZlcnMgdG8gdGhlIE9uQ29tcGxldGUgaW4gY29tYmluYXRpb24gd2l0aCB3aGV0aGVyIHRoZSBhcHAgaXMgYmVpbmcgY3JlYXRlZCBvciBjYWxsZWQKLy8gRXZlcnkgcG9zc2libGUgYWN0aW9uIGZvciB0aGlzIGNvbnRyYWN0IGlzIHJlcHJlc2VudGVkIGluIHRoZSBzd2l0Y2ggc3RhdGVtZW50Ci8vIElmIHRoZSBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBjb250cmFjdCwgaXRzIHJlc3BlY3RpdmUgYnJhbmNoIHdpbGwgYmUgIipOT1RfSU1QTEVNRU5URUQiIHdoaWNoIGp1c3QgY29udGFpbnMgImVyciIKdHhuIEFwcGxpY2F0aW9uSUQKIQpwdXNoaW50IDYKKgp0eG4gT25Db21wbGV0aW9uCisKc3dpdGNoICpjYWxsX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpjcmVhdGVfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQKCipOT1RfSU1QTEVNRU5URUQ6CgkvLyBUaGUgcmVxdWVzdGVkIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBjb250cmFjdC4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBPbkNvbXBsZXRlPyBEaWQgeW91IHNldCB5b3VyIGFwcCBJRD8KCWVycgoKLy8gY3JlYXRlRW1wdHlCb3goKXZvaWQKKmFiaV9yb3V0ZV9jcmVhdGVFbXB0eUJveDoKCS8vIGV4ZWN1dGUgY3JlYXRlRW1wdHlCb3goKXZvaWQKCWNhbGxzdWIgY3JlYXRlRW1wdHlCb3gKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIGNyZWF0ZUVtcHR5Qm94KCk6IHZvaWQKY3JlYXRlRW1wdHlCb3g6Cglwcm90byAwIDAKCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9yZXNvdXJjZS1wYWNrZXIvcmVzb3VyY2UtcGFja2VyLmFsZ28udHM6NjEKCS8vIHRoaXMuZW1wdHlCb3guY3JlYXRlKCkKCXB1c2hieXRlcyAweDY1NmQ3MDc0Nzk0MjZmNzggLy8gImVtcHR5Qm94IgoJcHVzaGludCAwCglib3hfY3JlYXRlCglwb3AKCXJldHN1YgoKKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbjoKCWludGMgMCAvLyAxCglyZXR1cm4KCipjcmVhdGVfTm9PcDoKCXB1c2hieXRlcyAweGI4NDQ3YjM2IC8vIG1ldGhvZCAiY3JlYXRlQXBwbGljYXRpb24oKXZvaWQiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNyZWF0ZSBOb09wCgllcnIKCipjYWxsX05vT3A6CglwdXNoYnl0ZXMgMHhhNjhiZDI5NyAvLyBtZXRob2QgImNyZWF0ZUVtcHR5Qm94KCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVFbXB0eUJveAoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycg==", + "clear": "I3ByYWdtYSB2ZXJzaW9uIDEw" + }, + "contract": { + "name": "InnerBoxApp", + "desc": "", + "methods": [ + { + "name": "createEmptyBox", + "args": [], + "returns": { + "type": "void" + } + }, + { + "name": "createApplication", + "args": [], + "returns": { + "type": "void" + } + } + ] + } +} \ No newline at end of file diff --git a/tests/example-contracts/resource-packer/artifacts/ResourcePackerv8.arc32.json b/tests/example-contracts/resource-packer/artifacts/ResourcePackerv8.arc32.json index d5afe92f7..58f452ce4 100644 --- a/tests/example-contracts/resource-packer/artifacts/ResourcePackerv8.arc32.json +++ b/tests/example-contracts/resource-packer/artifacts/ResourcePackerv8.arc32.json @@ -83,7 +83,7 @@ } }, "source": { - "approval": "I3ByYWdtYSB2ZXJzaW9uIDgKCi8vIFRoaXMgVEVBTCB3YXMgZ2VuZXJhdGVkIGJ5IFRFQUxTY3JpcHQgdjAuODcuMAovLyBodHRwczovL2dpdGh1Yi5jb20vYWxnb3JhbmRmb3VuZGF0aW9uL1RFQUxTY3JpcHQKCi8vIFRoaXMgY29udHJhY3QgaXMgY29tcGxpYW50IHdpdGggYW5kL29yIGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBBUkNzOiBbIEFSQzQgXQoKLy8gVGhlIGZvbGxvd2luZyB0ZW4gbGluZXMgb2YgVEVBTCBoYW5kbGUgaW5pdGlhbCBwcm9ncmFtIGZsb3cKLy8gVGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG8gbWFrZSBpdCBlYXN5IGZvciBhbnlvbmUgdG8gcGFyc2UgdGhlIHN0YXJ0IG9mIHRoZSBwcm9ncmFtIGFuZCBkZXRlcm1pbmUgaWYgYSBzcGVjaWZpYyBhY3Rpb24gaXMgYWxsb3dlZAovLyBIZXJlLCBhY3Rpb24gcmVmZXJzIHRvIHRoZSBPbkNvbXBsZXRlIGluIGNvbWJpbmF0aW9uIHdpdGggd2hldGhlciB0aGUgYXBwIGlzIGJlaW5nIGNyZWF0ZWQgb3IgY2FsbGVkCi8vIEV2ZXJ5IHBvc3NpYmxlIGFjdGlvbiBmb3IgdGhpcyBjb250cmFjdCBpcyByZXByZXNlbnRlZCBpbiB0aGUgc3dpdGNoIHN0YXRlbWVudAovLyBJZiB0aGUgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgY29udHJhY3QsIGl0cyByZXNwZWN0aXZlIGJyYW5jaCB3aWxsIGJlICIqTk9UX0lNUExFTUVOVEVEIiB3aGljaCBqdXN0IGNvbnRhaW5zICJlcnIiCnR4biBBcHBsaWNhdGlvbklECiEKaW50IDYKKgp0eG4gT25Db21wbGV0aW9uCisKc3dpdGNoICpjYWxsX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpjcmVhdGVfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQKCipOT1RfSU1QTEVNRU5URUQ6CgllcnIKCi8vIGJvb3RzdHJhcCgpdm9pZAoqYWJpX3JvdXRlX2Jvb3RzdHJhcDoKCS8vIGV4ZWN1dGUgYm9vdHN0cmFwKCl2b2lkCgljYWxsc3ViIGJvb3RzdHJhcAoJaW50IDEKCXJldHVybgoKLy8gYm9vdHN0cmFwKCk6IHZvaWQKYm9vdHN0cmFwOgoJcHJvdG8gMCAwCgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvcmVzb3VyY2UtcGFja2VyL3Jlc291cmNlLXBhY2tlci5hbGdvLnRzOjQ5CgkvLyBzZW5kTWV0aG9kQ2FsbDxbXSwgdm9pZD4oewoJLy8gICAgICAgbmFtZTogJ2NyZWF0ZUFwcGxpY2F0aW9uJywKCS8vICAgICAgIGFwcHJvdmFsUHJvZ3JhbTogRXh0ZXJuYWxBcHAuYXBwcm92YWxQcm9ncmFtKCksCgkvLyAgICAgICBjbGVhclN0YXRlUHJvZ3JhbTogRXh0ZXJuYWxBcHAuY2xlYXJQcm9ncmFtKCksCgkvLyAgICAgICBsb2NhbE51bUJ5dGVTbGljZTogRXh0ZXJuYWxBcHAuc2NoZW1hLmxvY2FsLm51bUJ5dGVTbGljZSwKCS8vICAgICAgIGdsb2JhbE51bUJ5dGVTbGljZTogRXh0ZXJuYWxBcHAuc2NoZW1hLmdsb2JhbC5udW1CeXRlU2xpY2UsCgkvLyAgICAgICBnbG9iYWxOdW1VaW50OiBFeHRlcm5hbEFwcC5zY2hlbWEuZ2xvYmFsLm51bVVpbnQsCgkvLyAgICAgICBsb2NhbE51bVVpbnQ6IEV4dGVybmFsQXBwLnNjaGVtYS5sb2NhbC5udW1VaW50LAoJLy8gICAgIH0pCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJbWV0aG9kICJjcmVhdGVBcHBsaWNhdGlvbigpdm9pZCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvcmVzb3VyY2UtcGFja2VyL3Jlc291cmNlLXBhY2tlci5hbGdvLnRzOjUxCgkvLyBhcHByb3ZhbFByb2dyYW06IEV4dGVybmFsQXBwLmFwcHJvdmFsUHJvZ3JhbSgpCglieXRlIGI2NCBDaUFCQVNZQ0EyWnZid05oYzJFeEdCU0JCZ3N4R1FpTkRBQ0hBTFVBQUFBQUFBQUFBQUI1QUFBQUFBQUFBQUFBQUFDSUFBSWlRNG9BQURFQWdBaHNiMk5oYkV0bGVTaG1pWWdBQWlKRGlnQUFpWWdBQWlKRGlnQUFBREVXSWdsSk9CQWlFa1NJQUFJaVE0b0JBSUFHWW05NFMyVjVTYnhJS0wrSmlBQUNJa09LQUFBcHNZRURzaEFpc2lLQkFMSUJzN1E4WjRtSUFBSWlRNG9BQURFQUtXUndBRXhJRkVTSklrT0FCTGhFZXpZMkdnQ09BZi94QUlBRW93em4vNEFFUk5EYURZQUUxaDVDVllBRXBscXIvb0FFWlZ4ZUFqWWFBSTRGLzJUL2JmOTIvNWIvc0FDQUJBR2pvLzgyR2dDT0FmOC9BQT09CglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbQoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL3Jlc291cmNlLXBhY2tlci9yZXNvdXJjZS1wYWNrZXIuYWxnby50czo1MgoJLy8gY2xlYXJTdGF0ZVByb2dyYW06IEV4dGVybmFsQXBwLmNsZWFyUHJvZ3JhbSgpCglieXRlIGI2NCBDZz09CglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvcmVzb3VyY2UtcGFja2VyL3Jlc291cmNlLXBhY2tlci5hbGdvLnRzOjUzCgkvLyBsb2NhbE51bUJ5dGVTbGljZTogRXh0ZXJuYWxBcHAuc2NoZW1hLmxvY2FsLm51bUJ5dGVTbGljZQoJaW50IDEKCWl0eG5fZmllbGQgTG9jYWxOdW1CeXRlU2xpY2UKCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9yZXNvdXJjZS1wYWNrZXIvcmVzb3VyY2UtcGFja2VyLmFsZ28udHM6NTQKCS8vIGdsb2JhbE51bUJ5dGVTbGljZTogRXh0ZXJuYWxBcHAuc2NoZW1hLmdsb2JhbC5udW1CeXRlU2xpY2UKCWludCAwCglpdHhuX2ZpZWxkIEdsb2JhbE51bUJ5dGVTbGljZQoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL3Jlc291cmNlLXBhY2tlci9yZXNvdXJjZS1wYWNrZXIuYWxnby50czo1NQoJLy8gZ2xvYmFsTnVtVWludDogRXh0ZXJuYWxBcHAuc2NoZW1hLmdsb2JhbC5udW1VaW50CglpbnQgMQoJaXR4bl9maWVsZCBHbG9iYWxOdW1VaW50CgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvcmVzb3VyY2UtcGFja2VyL3Jlc291cmNlLXBhY2tlci5hbGdvLnRzOjU2CgkvLyBsb2NhbE51bVVpbnQ6IEV4dGVybmFsQXBwLnNjaGVtYS5sb2NhbC5udW1VaW50CglpbnQgMAoJaXR4bl9maWVsZCBMb2NhbE51bVVpbnQKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnQgMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvcmVzb3VyY2UtcGFja2VyL3Jlc291cmNlLXBhY2tlci5hbGdvLnRzOjU5CgkvLyB0aGlzLmV4dGVybmFsQXBwSUQudmFsdWUgPSB0aGlzLml0eG4uY3JlYXRlZEFwcGxpY2F0aW9uSUQKCWJ5dGUgMHg2NTc4NzQ2NTcyNmU2MTZjNDE3MDcwNDk0NCAvLyAiZXh0ZXJuYWxBcHBJRCIKCWl0eG4gQ3JlYXRlZEFwcGxpY2F0aW9uSUQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvcmVzb3VyY2UtcGFja2VyL3Jlc291cmNlLXBhY2tlci5hbGdvLnRzOjYxCgkvLyB0aGlzLmFzYS52YWx1ZSA9IHNlbmRBc3NldENyZWF0aW9uKHsKCS8vICAgICAgIGNvbmZpZ0Fzc2V0VG90YWw6IDEsCgkvLyAgICAgfSkKCWJ5dGUgMHg2MTczNjEgLy8gImFzYSIKCWl0eG5fYmVnaW4KCWludCBhY2ZnCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvcmVzb3VyY2UtcGFja2VyL3Jlc291cmNlLXBhY2tlci5hbGdvLnRzOjYyCgkvLyBjb25maWdBc3NldFRvdGFsOiAxCglpbnQgMQoJaXR4bl9maWVsZCBDb25maWdBc3NldFRvdGFsCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50IDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBDcmVhdGVkQXNzZXRJRAoJYXBwX2dsb2JhbF9wdXQKCXJldHN1YgoKLy8gYWRkcmVzc0JhbGFuY2UoYWRkcmVzcyl2b2lkCiphYmlfcm91dGVfYWRkcmVzc0JhbGFuY2U6CgkvLyBhZGRyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50IDMyCgk9PQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBhZGRyZXNzQmFsYW5jZShhZGRyZXNzKXZvaWQKCWNhbGxzdWIgYWRkcmVzc0JhbGFuY2UKCWludCAxCglyZXR1cm4KCi8vIGFkZHJlc3NCYWxhbmNlKGFkZHI6IEFkZHJlc3MpOiB2b2lkCmFkZHJlc3NCYWxhbmNlOgoJcHJvdG8gMSAwCgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvcmVzb3VyY2UtcGFja2VyL3Jlc291cmNlLXBhY2tlci5hbGdvLnRzOjY3CgkvLyBsb2cocmF3Qnl0ZXMoYWRkci5pc0luTGVkZ2VyKSkKCWZyYW1lX2RpZyAtMSAvLyBhZGRyOiBBZGRyZXNzCglhY2N0X3BhcmFtc19nZXQgQWNjdEJhbGFuY2UKCXN3YXAKCXBvcAoJYnl0ZSAweDAwCglpbnQgMAoJdW5jb3ZlciAyCglzZXRiaXQKCWxvZwoJcmV0c3ViCgovLyBzbWFsbEJveCgpdm9pZAoqYWJpX3JvdXRlX3NtYWxsQm94OgoJLy8gZXhlY3V0ZSBzbWFsbEJveCgpdm9pZAoJY2FsbHN1YiBzbWFsbEJveAoJaW50IDEKCXJldHVybgoKLy8gc21hbGxCb3goKTogdm9pZApzbWFsbEJveDoKCXByb3RvIDAgMAoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL3Jlc291cmNlLXBhY2tlci9yZXNvdXJjZS1wYWNrZXIuYWxnby50czo3MQoJLy8gdGhpcy5zbWFsbEJveEtleS52YWx1ZSA9ICcnCglieXRlIDB4NzMgLy8gInMiCglkdXAKCWJveF9kZWwKCXBvcAoJYnl0ZSAweCAvLyAiIgoJYm94X3B1dAoJcmV0c3ViCgovLyBtZWRpdW1Cb3goKXZvaWQKKmFiaV9yb3V0ZV9tZWRpdW1Cb3g6CgkvLyBleGVjdXRlIG1lZGl1bUJveCgpdm9pZAoJY2FsbHN1YiBtZWRpdW1Cb3gKCWludCAxCglyZXR1cm4KCi8vIG1lZGl1bUJveCgpOiB2b2lkCm1lZGl1bUJveDoKCXByb3RvIDAgMAoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL3Jlc291cmNlLXBhY2tlci9yZXNvdXJjZS1wYWNrZXIuYWxnby50czo3NQoJLy8gdGhpcy5tZWRpdW1Cb3hLZXkuY3JlYXRlKDVfMDAwKQoJYnl0ZSAweDZkIC8vICJtIgoJaW50IDVfMDAwCglib3hfY3JlYXRlCglwb3AKCXJldHN1YgoKLy8gZXh0ZXJuYWxBcHBDYWxsKCl2b2lkCiphYmlfcm91dGVfZXh0ZXJuYWxBcHBDYWxsOgoJLy8gZXhlY3V0ZSBleHRlcm5hbEFwcENhbGwoKXZvaWQKCWNhbGxzdWIgZXh0ZXJuYWxBcHBDYWxsCglpbnQgMQoJcmV0dXJuCgovLyBleHRlcm5hbEFwcENhbGwoKTogdm9pZApleHRlcm5hbEFwcENhbGw6Cglwcm90byAwIDAKCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9yZXNvdXJjZS1wYWNrZXIvcmVzb3VyY2UtcGFja2VyLmFsZ28udHM6NzkKCS8vIHNlbmRNZXRob2RDYWxsPFtdLCB2b2lkPih7CgkvLyAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmV4dGVybmFsQXBwSUQudmFsdWUsCgkvLyAgICAgICBuYW1lOiAnZHVtbXknLAoJLy8gICAgIH0pCglpdHhuX2JlZ2luCglpbnQgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJbWV0aG9kICJkdW1teSgpdm9pZCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvcmVzb3VyY2UtcGFja2VyL3Jlc291cmNlLXBhY2tlci5hbGdvLnRzOjgwCgkvLyBhcHBsaWNhdGlvbklEOiB0aGlzLmV4dGVybmFsQXBwSUQudmFsdWUKCWJ5dGUgMHg2NTc4NzQ2NTcyNmU2MTZjNDE3MDcwNDk0NCAvLyAiZXh0ZXJuYWxBcHBJRCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnQgMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglyZXRzdWIKCi8vIGFzc2V0VG90YWwoKXZvaWQKKmFiaV9yb3V0ZV9hc3NldFRvdGFsOgoJLy8gZXhlY3V0ZSBhc3NldFRvdGFsKCl2b2lkCgljYWxsc3ViIGFzc2V0VG90YWwKCWludCAxCglyZXR1cm4KCi8vIGFzc2V0VG90YWwoKTogdm9pZAphc3NldFRvdGFsOgoJcHJvdG8gMCAwCgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvcmVzb3VyY2UtcGFja2VyL3Jlc291cmNlLXBhY2tlci5hbGdvLnRzOjg2CgkvLyBhc3NlcnQodGhpcy5hc2EudmFsdWUudG90YWwpCglieXRlIDB4NjE3MzYxIC8vICJhc2EiCglhcHBfZ2xvYmFsX2dldAoJYXNzZXRfcGFyYW1zX2dldCBBc3NldFRvdGFsCglwb3AKCWFzc2VydAoJcmV0c3ViCgovLyBoYXNBc3NldChhZGRyZXNzKXZvaWQKKmFiaV9yb3V0ZV9oYXNBc3NldDoKCS8vIGFkZHI6IGFkZHJlc3MKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnQgMzIKCT09Cglhc3NlcnQKCgkvLyBleGVjdXRlIGhhc0Fzc2V0KGFkZHJlc3Mpdm9pZAoJY2FsbHN1YiBoYXNBc3NldAoJaW50IDEKCXJldHVybgoKLy8gaGFzQXNzZXQoYWRkcjogQWRkcmVzcyk6IHZvaWQKaGFzQXNzZXQ6Cglwcm90byAxIDAKCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9yZXNvdXJjZS1wYWNrZXIvcmVzb3VyY2UtcGFja2VyLmFsZ28udHM6OTAKCS8vIGFzc2VydCghYWRkci5pc09wdGVkSW5Ub0Fzc2V0KHRoaXMuYXNhLnZhbHVlKSkKCWZyYW1lX2RpZyAtMSAvLyBhZGRyOiBBZGRyZXNzCglieXRlIDB4NjE3MzYxIC8vICJhc2EiCglhcHBfZ2xvYmFsX2dldAoJYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCglzd2FwCglwb3AKCSEKCWFzc2VydAoJcmV0c3ViCgovLyBleHRlcm5hbExvY2FsKGFkZHJlc3Mpdm9pZAoqYWJpX3JvdXRlX2V4dGVybmFsTG9jYWw6CgkvLyBhZGRyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50IDMyCgk9PQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBleHRlcm5hbExvY2FsKGFkZHJlc3Mpdm9pZAoJY2FsbHN1YiBleHRlcm5hbExvY2FsCglpbnQgMQoJcmV0dXJuCgovLyBleHRlcm5hbExvY2FsKGFkZHI6IEFkZHJlc3MpOiB2b2lkCmV4dGVybmFsTG9jYWw6Cglwcm90byAxIDAKCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9yZXNvdXJjZS1wYWNrZXIvcmVzb3VyY2UtcGFja2VyLmFsZ28udHM6OTQKCS8vIGxvZyh0aGlzLmV4dGVybmFsQXBwSUQudmFsdWUubG9jYWxTdGF0ZShhZGRyLCAnbG9jYWxLZXknKSBhcyBieXRlcykKCWJ5dGUgMHg2NTc4NzQ2NTcyNmU2MTZjNDE3MDcwNDk0NCAvLyAiZXh0ZXJuYWxBcHBJRCIKCWFwcF9nbG9iYWxfZ2V0CglieXRlIDB4NmM2ZjYzNjE2YzRiNjU3OSAvLyAibG9jYWxLZXkiCglmcmFtZV9kaWcgLTEgLy8gYWRkcjogQWRkcmVzcwoJY292ZXIgMgoJYXBwX2xvY2FsX2dldF9leAoJYXNzZXJ0Cglsb2cKCXJldHN1YgoKKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbjoKCWludCAxCglyZXR1cm4KCipjcmVhdGVfTm9PcDoKCW1ldGhvZCAiY3JlYXRlQXBwbGljYXRpb24oKXZvaWQiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uCgllcnIKCipjYWxsX05vT3A6CgltZXRob2QgImJvb3RzdHJhcCgpdm9pZCIKCW1ldGhvZCAiYWRkcmVzc0JhbGFuY2UoYWRkcmVzcyl2b2lkIgoJbWV0aG9kICJzbWFsbEJveCgpdm9pZCIKCW1ldGhvZCAibWVkaXVtQm94KCl2b2lkIgoJbWV0aG9kICJleHRlcm5hbEFwcENhbGwoKXZvaWQiCgltZXRob2QgImFzc2V0VG90YWwoKXZvaWQiCgltZXRob2QgImhhc0Fzc2V0KGFkZHJlc3Mpdm9pZCIKCW1ldGhvZCAiZXh0ZXJuYWxMb2NhbChhZGRyZXNzKXZvaWQiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX2Jvb3RzdHJhcCAqYWJpX3JvdXRlX2FkZHJlc3NCYWxhbmNlICphYmlfcm91dGVfc21hbGxCb3ggKmFiaV9yb3V0ZV9tZWRpdW1Cb3ggKmFiaV9yb3V0ZV9leHRlcm5hbEFwcENhbGwgKmFiaV9yb3V0ZV9hc3NldFRvdGFsICphYmlfcm91dGVfaGFzQXNzZXQgKmFiaV9yb3V0ZV9leHRlcm5hbExvY2FsCgllcnI=", + "approval": "I3ByYWdtYSB2ZXJzaW9uIDgKaW50Y2Jsb2NrIDEgMCA2IDMyCmJ5dGVjYmxvY2sgMHg2NTc4NzQ2NTcyNmU2MTZjNDE3MDcwNDk0NCAweDYxNzM2MSAweGI4NDQ3YjM2IDB4NzMKCi8vIFRoaXMgVEVBTCB3YXMgZ2VuZXJhdGVkIGJ5IFRFQUxTY3JpcHQgdjAuMTA2LjMKLy8gaHR0cHM6Ly9naXRodWIuY29tL2FsZ29yYW5kZm91bmRhdGlvbi9URUFMU2NyaXB0CgovLyBUaGlzIGNvbnRyYWN0IGlzIGNvbXBsaWFudCB3aXRoIGFuZC9vciBpbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgQVJDczogWyBBUkM0IF0KCi8vIFRoZSBmb2xsb3dpbmcgdGVuIGxpbmVzIG9mIFRFQUwgaGFuZGxlIGluaXRpYWwgcHJvZ3JhbSBmbG93Ci8vIFRoaXMgcGF0dGVybiBpcyB1c2VkIHRvIG1ha2UgaXQgZWFzeSBmb3IgYW55b25lIHRvIHBhcnNlIHRoZSBzdGFydCBvZiB0aGUgcHJvZ3JhbSBhbmQgZGV0ZXJtaW5lIGlmIGEgc3BlY2lmaWMgYWN0aW9uIGlzIGFsbG93ZWQKLy8gSGVyZSwgYWN0aW9uIHJlZmVycyB0byB0aGUgT25Db21wbGV0ZSBpbiBjb21iaW5hdGlvbiB3aXRoIHdoZXRoZXIgdGhlIGFwcCBpcyBiZWluZyBjcmVhdGVkIG9yIGNhbGxlZAovLyBFdmVyeSBwb3NzaWJsZSBhY3Rpb24gZm9yIHRoaXMgY29udHJhY3QgaXMgcmVwcmVzZW50ZWQgaW4gdGhlIHN3aXRjaCBzdGF0ZW1lbnQKLy8gSWYgdGhlIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGNvbnRyYWN0LCBpdHMgcmVzcGVjdGl2ZSBicmFuY2ggd2lsbCBiZSAiKk5PVF9JTVBMRU1FTlRFRCIgd2hpY2gganVzdCBjb250YWlucyAiZXJyIgp0eG4gQXBwbGljYXRpb25JRAohCmludGMgMiAvLyA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY3JlYXRlX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVECgoqTk9UX0lNUExFTUVOVEVEOgoJLy8gVGhlIHJlcXVlc3RlZCBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgY29udHJhY3QuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3QgT25Db21wbGV0ZT8gRGlkIHlvdSBzZXQgeW91ciBhcHAgSUQ/CgllcnIKCi8vIGJvb3RzdHJhcCgpdm9pZAoqYWJpX3JvdXRlX2Jvb3RzdHJhcDoKCS8vIGV4ZWN1dGUgYm9vdHN0cmFwKCl2b2lkCgljYWxsc3ViIGJvb3RzdHJhcAoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gYm9vdHN0cmFwKCk6IHZvaWQKYm9vdHN0cmFwOgoJcHJvdG8gMCAwCgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvcmVzb3VyY2UtcGFja2VyL3Jlc291cmNlLXBhY2tlci5hbGdvLnRzOjc4CgkvLyBzZW5kTWV0aG9kQ2FsbDxbXSwgdm9pZD4oewoJLy8gICAgICAgbmFtZTogJ2NyZWF0ZUFwcGxpY2F0aW9uJywKCS8vICAgICAgIGFwcHJvdmFsUHJvZ3JhbTogRXh0ZXJuYWxBcHAuYXBwcm92YWxQcm9ncmFtKCksCgkvLyAgICAgICBjbGVhclN0YXRlUHJvZ3JhbTogRXh0ZXJuYWxBcHAuY2xlYXJQcm9ncmFtKCksCgkvLyAgICAgICBsb2NhbE51bUJ5dGVTbGljZTogRXh0ZXJuYWxBcHAuc2NoZW1hLmxvY2FsLm51bUJ5dGVTbGljZSwKCS8vICAgICAgIGdsb2JhbE51bUJ5dGVTbGljZTogRXh0ZXJuYWxBcHAuc2NoZW1hLmdsb2JhbC5udW1CeXRlU2xpY2UsCgkvLyAgICAgICBnbG9iYWxOdW1VaW50OiBFeHRlcm5hbEFwcC5zY2hlbWEuZ2xvYmFsLm51bVVpbnQsCgkvLyAgICAgICBsb2NhbE51bVVpbnQ6IEV4dGVybmFsQXBwLnNjaGVtYS5sb2NhbC5udW1VaW50LAoJLy8gICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDIgLy8gIG1ldGhvZCAiY3JlYXRlQXBwbGljYXRpb24oKXZvaWQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL3Jlc291cmNlLXBhY2tlci9yZXNvdXJjZS1wYWNrZXIuYWxnby50czo4MAoJLy8gYXBwcm92YWxQcm9ncmFtOiBFeHRlcm5hbEFwcC5hcHByb3ZhbFByb2dyYW0oKQoJcHVzaGJ5dGVzIDB4MGEyMDAzMDEwMDA2MjYwNTA2NjI2Zjc4NGI2NTc5MDRiODQ0N2IzNjAzNjY2ZjZmMDM2MTczNjEwMDMxMTgxNDI0MGIzMTE5MDg4ZDBjMDEzYjAxNzEwMDAwMDAwMDAwMDAwMDAwMDEzMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDA4ODAwMDIyMjQzOGEwMDAwMzEwMDgwMDg2YzZmNjM2MTZjNGI2NTc5MmE2Njg5ODgwMDAyMjI0MzhhMDAwMDg5ODgwMDAyMjI0MzhhMDAwMDAwODkzMTE2MjIwOTQ5MzgxMDIyMTI0NDg4MDAwMjIyNDM4YTAxMDAyODQ5YmM0ODJhYmY4OTg4MDAwMjIyNDM4YTAwMDAyYmIxODEwM2IyMTAyMmIyMjIyM2IyMDFiM2I0M2M2Nzg5ODgwMDAyMjI0MzhhMDAwMDMxMDAyYjY0NzAwMDRjNDgxNDQ0ODkzMTE2MjIwOTQ5MzgxMDIyMTI0NDg4MDAwMjIyNDM4YTAxMDAyNzA0NDk4YmZmMzgwNzMyMGExMjQ0YjEyNGIyMTAyOWIyMWE4MDVkMGEyMDAxMDEzMTE4MTQ4MTA2MGIzMTE5MDg4ZDBjMDAyODAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxYTAwMDAwMDAwMDAwMDAwMDAwMDAwMDA4ODAwMDIyMjQzOGEwMDAwODAwODY1NmQ3MDc0Nzk0MjZmNzg4MTAwYjk0ODg5MjI0MzgwMDRiODQ0N2IzNjM2MWEwMDhlMDFmZmYxMDA4MDA0YTY4YmQyOTczNjFhMDA4ZTAxZmZjYzAwYjIxZTgwMDEwYWIyMWYyM2IyMDFiM2I0M2Q4YzAwOGIwMDcyMDg0ODhjMDFiMTIyYjIxMDhiMDFiMjA3OGJmZjM4MDhiMjA4MjNiMjAxYjNiMTI0YjIxMDgwMDRhNjhiZDI5N2IyMWE4YjAwYjIxODIzYjIwMWIzODkyMjQzMjkzNjFhMDA4ZTAxZmZmNjAwODAwNGEzMGNlN2ZmODAwNDQ0ZDBkYTBkODAwNGQ2MWU0MjU1ODAwNGE2NWFhYmZlODAwNDY1NWM1ZTAyODAwNDFhNDU2YWNhMzYxYTAwOGUwNmZlYThmZWIxZmViYmZlZDRmZWVkZmYwMDAwODAwNDAxYTNhM2ZmMzYxYTAwOGUwMWZlODMwMAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9yZXNvdXJjZS1wYWNrZXIvcmVzb3VyY2UtcGFja2VyLmFsZ28udHM6ODEKCS8vIGNsZWFyU3RhdGVQcm9ncmFtOiBFeHRlcm5hbEFwcC5jbGVhclByb2dyYW0oKQoJcHVzaGJ5dGVzIDB4MGEKCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9yZXNvdXJjZS1wYWNrZXIvcmVzb3VyY2UtcGFja2VyLmFsZ28udHM6ODIKCS8vIGxvY2FsTnVtQnl0ZVNsaWNlOiBFeHRlcm5hbEFwcC5zY2hlbWEubG9jYWwubnVtQnl0ZVNsaWNlCglpbnRjIDAgLy8gMQoJaXR4bl9maWVsZCBMb2NhbE51bUJ5dGVTbGljZQoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL3Jlc291cmNlLXBhY2tlci9yZXNvdXJjZS1wYWNrZXIuYWxnby50czo4MwoJLy8gZ2xvYmFsTnVtQnl0ZVNsaWNlOiBFeHRlcm5hbEFwcC5zY2hlbWEuZ2xvYmFsLm51bUJ5dGVTbGljZQoJaW50YyAxIC8vIDAKCWl0eG5fZmllbGQgR2xvYmFsTnVtQnl0ZVNsaWNlCgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvcmVzb3VyY2UtcGFja2VyL3Jlc291cmNlLXBhY2tlci5hbGdvLnRzOjg0CgkvLyBnbG9iYWxOdW1VaW50OiBFeHRlcm5hbEFwcC5zY2hlbWEuZ2xvYmFsLm51bVVpbnQKCWludGMgMCAvLyAxCglpdHhuX2ZpZWxkIEdsb2JhbE51bVVpbnQKCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9yZXNvdXJjZS1wYWNrZXIvcmVzb3VyY2UtcGFja2VyLmFsZ28udHM6ODUKCS8vIGxvY2FsTnVtVWludDogRXh0ZXJuYWxBcHAuc2NoZW1hLmxvY2FsLm51bVVpbnQKCWludGMgMSAvLyAwCglpdHhuX2ZpZWxkIExvY2FsTnVtVWludAoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMSAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9yZXNvdXJjZS1wYWNrZXIvcmVzb3VyY2UtcGFja2VyLmFsZ28udHM6ODgKCS8vIHRoaXMuZXh0ZXJuYWxBcHBJRC52YWx1ZSA9IHRoaXMuaXR4bi5jcmVhdGVkQXBwbGljYXRpb25JRAoJYnl0ZWMgMCAvLyAgImV4dGVybmFsQXBwSUQiCglpdHhuIENyZWF0ZWRBcHBsaWNhdGlvbklECglhcHBfZ2xvYmFsX3B1dAoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL3Jlc291cmNlLXBhY2tlci9yZXNvdXJjZS1wYWNrZXIuYWxnby50czo5MAoJLy8gdGhpcy5hc2EudmFsdWUgPSBzZW5kQXNzZXRDcmVhdGlvbih7CgkvLyAgICAgICBjb25maWdBc3NldFRvdGFsOiAxLAoJLy8gICAgIH0pCglieXRlYyAxIC8vICAiYXNhIgoJaXR4bl9iZWdpbgoJcHVzaGludCAzIC8vIGFjZmcKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9yZXNvdXJjZS1wYWNrZXIvcmVzb3VyY2UtcGFja2VyLmFsZ28udHM6OTEKCS8vIGNvbmZpZ0Fzc2V0VG90YWw6IDEKCWludGMgMCAvLyAxCglpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0VG90YWwKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDEgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIENyZWF0ZWRBc3NldElECglhcHBfZ2xvYmFsX3B1dAoJcmV0c3ViCgovLyBhZGRyZXNzQmFsYW5jZShhZGRyZXNzKXZvaWQKKmFiaV9yb3V0ZV9hZGRyZXNzQmFsYW5jZToKCS8vIGFkZHI6IGFkZHJlc3MKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDMgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMCAoYWRkcikgZm9yIGFkZHJlc3NCYWxhbmNlIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIGFkZHJlc3NCYWxhbmNlKGFkZHJlc3Mpdm9pZAoJY2FsbHN1YiBhZGRyZXNzQmFsYW5jZQoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gYWRkcmVzc0JhbGFuY2UoYWRkcjogQWRkcmVzcyk6IHZvaWQKYWRkcmVzc0JhbGFuY2U6Cglwcm90byAxIDAKCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9yZXNvdXJjZS1wYWNrZXIvcmVzb3VyY2UtcGFja2VyLmFsZ28udHM6OTYKCS8vIGxvZyhyYXdCeXRlcyhhZGRyLmlzSW5MZWRnZXIpKQoJZnJhbWVfZGlnIC0xIC8vIGFkZHI6IEFkZHJlc3MKCWFjY3RfcGFyYW1zX2dldCBBY2N0QmFsYW5jZQoJc3dhcAoJcG9wCglwdXNoYnl0ZXMgMHgwMAoJaW50YyAxIC8vIDAKCXVuY292ZXIgMgoJc2V0Yml0Cglsb2cKCXJldHN1YgoKLy8gc21hbGxCb3goKXZvaWQKKmFiaV9yb3V0ZV9zbWFsbEJveDoKCS8vIGV4ZWN1dGUgc21hbGxCb3goKXZvaWQKCWNhbGxzdWIgc21hbGxCb3gKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIHNtYWxsQm94KCk6IHZvaWQKc21hbGxCb3g6Cglwcm90byAwIDAKCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9yZXNvdXJjZS1wYWNrZXIvcmVzb3VyY2UtcGFja2VyLmFsZ28udHM6MTAwCgkvLyB0aGlzLnNtYWxsQm94S2V5LnZhbHVlID0gJycKCWJ5dGVjIDMgLy8gICJzIgoJZHVwCglib3hfZGVsCglwb3AKCXB1c2hieXRlcyAweCAvLyAiIgoJYm94X3B1dAoJcmV0c3ViCgovLyBtZWRpdW1Cb3goKXZvaWQKKmFiaV9yb3V0ZV9tZWRpdW1Cb3g6CgkvLyBleGVjdXRlIG1lZGl1bUJveCgpdm9pZAoJY2FsbHN1YiBtZWRpdW1Cb3gKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIG1lZGl1bUJveCgpOiB2b2lkCm1lZGl1bUJveDoKCXByb3RvIDAgMAoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL3Jlc291cmNlLXBhY2tlci9yZXNvdXJjZS1wYWNrZXIuYWxnby50czoxMDQKCS8vIHRoaXMubWVkaXVtQm94S2V5LmNyZWF0ZSg1XzAwMCkKCXB1c2hieXRlcyAweDZkIC8vICJtIgoJcHVzaGludCA1XzAwMAoJYm94X2NyZWF0ZQoJcG9wCglyZXRzdWIKCi8vIGV4dGVybmFsQXBwQ2FsbCgpdm9pZAoqYWJpX3JvdXRlX2V4dGVybmFsQXBwQ2FsbDoKCS8vIGV4ZWN1dGUgZXh0ZXJuYWxBcHBDYWxsKCl2b2lkCgljYWxsc3ViIGV4dGVybmFsQXBwQ2FsbAoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gZXh0ZXJuYWxBcHBDYWxsKCk6IHZvaWQKZXh0ZXJuYWxBcHBDYWxsOgoJcHJvdG8gMCAwCgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvcmVzb3VyY2UtcGFja2VyL3Jlc291cmNlLXBhY2tlci5hbGdvLnRzOjEwOAoJLy8gc2VuZE1ldGhvZENhbGw8W10sIHZvaWQ+KHsKCS8vICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuZXh0ZXJuYWxBcHBJRC52YWx1ZSwKCS8vICAgICAgIG5hbWU6ICdkdW1teScsCgkvLyAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMiAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJcHVzaGJ5dGVzIDB4YTMwY2U3ZmYgLy8gbWV0aG9kICJkdW1teSgpdm9pZCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvcmVzb3VyY2UtcGFja2VyL3Jlc291cmNlLXBhY2tlci5hbGdvLnRzOjEwOQoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5leHRlcm5hbEFwcElELnZhbHVlCglieXRlYyAwIC8vICAiZXh0ZXJuYWxBcHBJRCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDEgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglyZXRzdWIKCi8vIGFzc2V0VG90YWwoKXZvaWQKKmFiaV9yb3V0ZV9hc3NldFRvdGFsOgoJLy8gZXhlY3V0ZSBhc3NldFRvdGFsKCl2b2lkCgljYWxsc3ViIGFzc2V0VG90YWwKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIGFzc2V0VG90YWwoKTogdm9pZAphc3NldFRvdGFsOgoJcHJvdG8gMCAwCgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvcmVzb3VyY2UtcGFja2VyL3Jlc291cmNlLXBhY2tlci5hbGdvLnRzOjExNQoJLy8gYXNzZXJ0KHRoaXMuYXNhLnZhbHVlLnRvdGFsKQoJYnl0ZWMgMSAvLyAgImFzYSIKCWFwcF9nbG9iYWxfZ2V0Cglhc3NldF9wYXJhbXNfZ2V0IEFzc2V0VG90YWwKCXBvcAoJYXNzZXJ0CglyZXRzdWIKCi8vIGhhc0Fzc2V0KGFkZHJlc3Mpdm9pZAoqYWJpX3JvdXRlX2hhc0Fzc2V0OgoJLy8gYWRkcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgMyAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChhZGRyKSBmb3IgaGFzQXNzZXQgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIGV4ZWN1dGUgaGFzQXNzZXQoYWRkcmVzcyl2b2lkCgljYWxsc3ViIGhhc0Fzc2V0CglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyBoYXNBc3NldChhZGRyOiBBZGRyZXNzKTogdm9pZApoYXNBc3NldDoKCXByb3RvIDEgMAoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL3Jlc291cmNlLXBhY2tlci9yZXNvdXJjZS1wYWNrZXIuYWxnby50czoxMTkKCS8vIGFzc2VydCghYWRkci5pc09wdGVkSW5Ub0Fzc2V0KHRoaXMuYXNhLnZhbHVlKSkKCWZyYW1lX2RpZyAtMSAvLyBhZGRyOiBBZGRyZXNzCglieXRlYyAxIC8vICAiYXNhIgoJYXBwX2dsb2JhbF9nZXQKCWFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQoJc3dhcAoJcG9wCgkhCglhc3NlcnQKCXJldHN1YgoKLy8gZXh0ZXJuYWxMb2NhbChhZGRyZXNzKXZvaWQKKmFiaV9yb3V0ZV9leHRlcm5hbExvY2FsOgoJLy8gYWRkcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgMyAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChhZGRyKSBmb3IgZXh0ZXJuYWxMb2NhbCBtdXN0IGJlIGEgYWRkcmVzcwoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBleHRlcm5hbExvY2FsKGFkZHJlc3Mpdm9pZAoJY2FsbHN1YiBleHRlcm5hbExvY2FsCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyBleHRlcm5hbExvY2FsKGFkZHI6IEFkZHJlc3MpOiB2b2lkCmV4dGVybmFsTG9jYWw6Cglwcm90byAxIDAKCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9yZXNvdXJjZS1wYWNrZXIvcmVzb3VyY2UtcGFja2VyLmFsZ28udHM6MTIzCgkvLyBsb2codGhpcy5leHRlcm5hbEFwcElELnZhbHVlLmxvY2FsU3RhdGUoYWRkciwgJ2xvY2FsS2V5JykgYXMgYnl0ZXMpCglieXRlYyAwIC8vICAiZXh0ZXJuYWxBcHBJRCIKCWFwcF9nbG9iYWxfZ2V0CglwdXNoYnl0ZXMgMHg2YzZmNjM2MTZjNGI2NTc5IC8vICJsb2NhbEtleSIKCWZyYW1lX2RpZyAtMSAvLyBhZGRyOiBBZGRyZXNzCgljb3ZlciAyCglhcHBfbG9jYWxfZ2V0X2V4CgoJLy8gbG9jYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IHRoaXMuZXh0ZXJuYWxBcHBJRC52YWx1ZS5sb2NhbFN0YXRlKGFkZHIsICdsb2NhbEtleScpCglhc3NlcnQKCWxvZwoJcmV0c3ViCgoqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uOgoJaW50YyAwIC8vIDEKCXJldHVybgoKKmNyZWF0ZV9Ob09wOgoJYnl0ZWMgMiAvLyAgbWV0aG9kICJjcmVhdGVBcHBsaWNhdGlvbigpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb24KCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY3JlYXRlIE5vT3AKCWVycgoKKmNhbGxfTm9PcDoKCXB1c2hieXRlcyAweGJlYzc2ZDg3IC8vIG1ldGhvZCAiYm9vdHN0cmFwKCl2b2lkIgoJcHVzaGJ5dGVzIDB4MjZkYjlkYjcgLy8gbWV0aG9kICJhZGRyZXNzQmFsYW5jZShhZGRyZXNzKXZvaWQiCglwdXNoYnl0ZXMgMHgzMDllZTA3MyAvLyBtZXRob2QgInNtYWxsQm94KCl2b2lkIgoJcHVzaGJ5dGVzIDB4YjU2NjhlMTcgLy8gbWV0aG9kICJtZWRpdW1Cb3goKXZvaWQiCglwdXNoYnl0ZXMgMHhhOWQ4MzVlMCAvLyBtZXRob2QgImV4dGVybmFsQXBwQ2FsbCgpdm9pZCIKCXB1c2hieXRlcyAweDIxMTYyNGEwIC8vIG1ldGhvZCAiYXNzZXRUb3RhbCgpdm9pZCIKCXB1c2hieXRlcyAweGFhMzhhZTkxIC8vIG1ldGhvZCAiaGFzQXNzZXQoYWRkcmVzcyl2b2lkIgoJcHVzaGJ5dGVzIDB4MjRkMWQwMTMgLy8gbWV0aG9kICJleHRlcm5hbExvY2FsKGFkZHJlc3Mpdm9pZCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfYm9vdHN0cmFwICphYmlfcm91dGVfYWRkcmVzc0JhbGFuY2UgKmFiaV9yb3V0ZV9zbWFsbEJveCAqYWJpX3JvdXRlX21lZGl1bUJveCAqYWJpX3JvdXRlX2V4dGVybmFsQXBwQ2FsbCAqYWJpX3JvdXRlX2Fzc2V0VG90YWwgKmFiaV9yb3V0ZV9oYXNBc3NldCAqYWJpX3JvdXRlX2V4dGVybmFsTG9jYWwKCgkvLyB0aGlzIGNvbnRyYWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgZ2l2ZW4gQUJJIG1ldGhvZCBmb3IgY2FsbCBOb09wCgllcnI=", "clear": "I3ByYWdtYSB2ZXJzaW9uIDg=" }, "contract": { diff --git a/tests/example-contracts/resource-packer/artifacts/ResourcePackerv9.arc32.json b/tests/example-contracts/resource-packer/artifacts/ResourcePackerv9.arc32.json index 2aa295556..fb1572f70 100644 --- a/tests/example-contracts/resource-packer/artifacts/ResourcePackerv9.arc32.json +++ b/tests/example-contracts/resource-packer/artifacts/ResourcePackerv9.arc32.json @@ -83,7 +83,7 @@ } }, "source": { - "approval": "I3ByYWdtYSB2ZXJzaW9uIDkKCi8vIFRoaXMgVEVBTCB3YXMgZ2VuZXJhdGVkIGJ5IFRFQUxTY3JpcHQgdjAuODcuMAovLyBodHRwczovL2dpdGh1Yi5jb20vYWxnb3JhbmRmb3VuZGF0aW9uL1RFQUxTY3JpcHQKCi8vIFRoaXMgY29udHJhY3QgaXMgY29tcGxpYW50IHdpdGggYW5kL29yIGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBBUkNzOiBbIEFSQzQgXQoKLy8gVGhlIGZvbGxvd2luZyB0ZW4gbGluZXMgb2YgVEVBTCBoYW5kbGUgaW5pdGlhbCBwcm9ncmFtIGZsb3cKLy8gVGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG8gbWFrZSBpdCBlYXN5IGZvciBhbnlvbmUgdG8gcGFyc2UgdGhlIHN0YXJ0IG9mIHRoZSBwcm9ncmFtIGFuZCBkZXRlcm1pbmUgaWYgYSBzcGVjaWZpYyBhY3Rpb24gaXMgYWxsb3dlZAovLyBIZXJlLCBhY3Rpb24gcmVmZXJzIHRvIHRoZSBPbkNvbXBsZXRlIGluIGNvbWJpbmF0aW9uIHdpdGggd2hldGhlciB0aGUgYXBwIGlzIGJlaW5nIGNyZWF0ZWQgb3IgY2FsbGVkCi8vIEV2ZXJ5IHBvc3NpYmxlIGFjdGlvbiBmb3IgdGhpcyBjb250cmFjdCBpcyByZXByZXNlbnRlZCBpbiB0aGUgc3dpdGNoIHN0YXRlbWVudAovLyBJZiB0aGUgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgY29udHJhY3QsIGl0cyByZXNwZWN0aXZlIGJyYW5jaCB3aWxsIGJlICIqTk9UX0lNUExFTUVOVEVEIiB3aGljaCBqdXN0IGNvbnRhaW5zICJlcnIiCnR4biBBcHBsaWNhdGlvbklECiEKaW50IDYKKgp0eG4gT25Db21wbGV0aW9uCisKc3dpdGNoICpjYWxsX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpjcmVhdGVfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQKCipOT1RfSU1QTEVNRU5URUQ6CgllcnIKCi8vIGJvb3RzdHJhcCgpdm9pZAoqYWJpX3JvdXRlX2Jvb3RzdHJhcDoKCS8vIGV4ZWN1dGUgYm9vdHN0cmFwKCl2b2lkCgljYWxsc3ViIGJvb3RzdHJhcAoJaW50IDEKCXJldHVybgoKLy8gYm9vdHN0cmFwKCk6IHZvaWQKYm9vdHN0cmFwOgoJcHJvdG8gMCAwCgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvcmVzb3VyY2UtcGFja2VyL3Jlc291cmNlLXBhY2tlci5hbGdvLnRzOjExMQoJLy8gc2VuZE1ldGhvZENhbGw8W10sIHZvaWQ+KHsKCS8vICAgICAgIG5hbWU6ICdjcmVhdGVBcHBsaWNhdGlvbicsCgkvLyAgICAgICBhcHByb3ZhbFByb2dyYW06IEV4dGVybmFsQXBwLmFwcHJvdmFsUHJvZ3JhbSgpLAoJLy8gICAgICAgY2xlYXJTdGF0ZVByb2dyYW06IEV4dGVybmFsQXBwLmNsZWFyUHJvZ3JhbSgpLAoJLy8gICAgICAgbG9jYWxOdW1CeXRlU2xpY2U6IEV4dGVybmFsQXBwLnNjaGVtYS5sb2NhbC5udW1CeXRlU2xpY2UsCgkvLyAgICAgICBnbG9iYWxOdW1CeXRlU2xpY2U6IEV4dGVybmFsQXBwLnNjaGVtYS5nbG9iYWwubnVtQnl0ZVNsaWNlLAoJLy8gICAgICAgZ2xvYmFsTnVtVWludDogRXh0ZXJuYWxBcHAuc2NoZW1hLmdsb2JhbC5udW1VaW50LAoJLy8gICAgICAgbG9jYWxOdW1VaW50OiBFeHRlcm5hbEFwcC5zY2hlbWEubG9jYWwubnVtVWludCwKCS8vICAgICB9KQoJaXR4bl9iZWdpbgoJaW50IGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCW1ldGhvZCAiY3JlYXRlQXBwbGljYXRpb24oKXZvaWQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL3Jlc291cmNlLXBhY2tlci9yZXNvdXJjZS1wYWNrZXIuYWxnby50czoxMTMKCS8vIGFwcHJvdmFsUHJvZ3JhbTogRXh0ZXJuYWxBcHAuYXBwcm92YWxQcm9ncmFtKCkKCWJ5dGUgYjY0IENpQUJBU1lDQTJadmJ3TmhjMkV4R0JTQkJnc3hHUWlOREFDSEFMVUFBQUFBQUFBQUFBQjVBQUFBQUFBQUFBQUFBQUNJQUFJaVE0b0FBREVBZ0Foc2IyTmhiRXRsZVNobWlZZ0FBaUpEaWdBQWlZZ0FBaUpEaWdBQUFERVdJZ2xKT0JBaUVrU0lBQUlpUTRvQkFJQUdZbTk0UzJWNVNieElLTCtKaUFBQ0lrT0tBQUFwc1lFRHNoQWlzaUtCQUxJQnM3UThaNG1JQUFJaVE0b0FBREVBS1dSd0FFeElGRVNKSWtPQUJMaEVlelkyR2dDT0FmL3hBSUFFb3d6bi80QUVSTkRhRFlBRTFoNUNWWUFFcGxxci9vQUVaVnhlQWpZYUFJNEYvMlQvYmY5Mi81Yi9zQUNBQkFHam8vODJHZ0NPQWY4L0FBPT0KCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtCgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvcmVzb3VyY2UtcGFja2VyL3Jlc291cmNlLXBhY2tlci5hbGdvLnRzOjExNAoJLy8gY2xlYXJTdGF0ZVByb2dyYW06IEV4dGVybmFsQXBwLmNsZWFyUHJvZ3JhbSgpCglieXRlIGI2NCBDZz09CglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvcmVzb3VyY2UtcGFja2VyL3Jlc291cmNlLXBhY2tlci5hbGdvLnRzOjExNQoJLy8gbG9jYWxOdW1CeXRlU2xpY2U6IEV4dGVybmFsQXBwLnNjaGVtYS5sb2NhbC5udW1CeXRlU2xpY2UKCWludCAxCglpdHhuX2ZpZWxkIExvY2FsTnVtQnl0ZVNsaWNlCgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvcmVzb3VyY2UtcGFja2VyL3Jlc291cmNlLXBhY2tlci5hbGdvLnRzOjExNgoJLy8gZ2xvYmFsTnVtQnl0ZVNsaWNlOiBFeHRlcm5hbEFwcC5zY2hlbWEuZ2xvYmFsLm51bUJ5dGVTbGljZQoJaW50IDAKCWl0eG5fZmllbGQgR2xvYmFsTnVtQnl0ZVNsaWNlCgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvcmVzb3VyY2UtcGFja2VyL3Jlc291cmNlLXBhY2tlci5hbGdvLnRzOjExNwoJLy8gZ2xvYmFsTnVtVWludDogRXh0ZXJuYWxBcHAuc2NoZW1hLmdsb2JhbC5udW1VaW50CglpbnQgMQoJaXR4bl9maWVsZCBHbG9iYWxOdW1VaW50CgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvcmVzb3VyY2UtcGFja2VyL3Jlc291cmNlLXBhY2tlci5hbGdvLnRzOjExOAoJLy8gbG9jYWxOdW1VaW50OiBFeHRlcm5hbEFwcC5zY2hlbWEubG9jYWwubnVtVWludAoJaW50IDAKCWl0eG5fZmllbGQgTG9jYWxOdW1VaW50CgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50IDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL3Jlc291cmNlLXBhY2tlci9yZXNvdXJjZS1wYWNrZXIuYWxnby50czoxMjEKCS8vIHRoaXMuZXh0ZXJuYWxBcHBJRC52YWx1ZSA9IHRoaXMuaXR4bi5jcmVhdGVkQXBwbGljYXRpb25JRAoJYnl0ZSAweDY1Nzg3NDY1NzI2ZTYxNmM0MTcwNzA0OTQ0IC8vICJleHRlcm5hbEFwcElEIgoJaXR4biBDcmVhdGVkQXBwbGljYXRpb25JRAoJYXBwX2dsb2JhbF9wdXQKCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9yZXNvdXJjZS1wYWNrZXIvcmVzb3VyY2UtcGFja2VyLmFsZ28udHM6MTIzCgkvLyB0aGlzLmFzYS52YWx1ZSA9IHNlbmRBc3NldENyZWF0aW9uKHsKCS8vICAgICAgIGNvbmZpZ0Fzc2V0VG90YWw6IDEsCgkvLyAgICAgfSkKCWJ5dGUgMHg2MTczNjEgLy8gImFzYSIKCWl0eG5fYmVnaW4KCWludCBhY2ZnCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvcmVzb3VyY2UtcGFja2VyL3Jlc291cmNlLXBhY2tlci5hbGdvLnRzOjEyNAoJLy8gY29uZmlnQXNzZXRUb3RhbDogMQoJaW50IDEKCWl0eG5fZmllbGQgQ29uZmlnQXNzZXRUb3RhbAoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludCAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gQ3JlYXRlZEFzc2V0SUQKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGFkZHJlc3NCYWxhbmNlKGFkZHJlc3Mpdm9pZAoqYWJpX3JvdXRlX2FkZHJlc3NCYWxhbmNlOgoJLy8gYWRkcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludCAzMgoJPT0KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYWRkcmVzc0JhbGFuY2UoYWRkcmVzcyl2b2lkCgljYWxsc3ViIGFkZHJlc3NCYWxhbmNlCglpbnQgMQoJcmV0dXJuCgovLyBhZGRyZXNzQmFsYW5jZShhZGRyOiBBZGRyZXNzKTogdm9pZAphZGRyZXNzQmFsYW5jZToKCXByb3RvIDEgMAoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL3Jlc291cmNlLXBhY2tlci9yZXNvdXJjZS1wYWNrZXIuYWxnby50czoxMjkKCS8vIGxvZyhyYXdCeXRlcyhhZGRyLmlzSW5MZWRnZXIpKQoJZnJhbWVfZGlnIC0xIC8vIGFkZHI6IEFkZHJlc3MKCWFjY3RfcGFyYW1zX2dldCBBY2N0QmFsYW5jZQoJc3dhcAoJcG9wCglieXRlIDB4MDAKCWludCAwCgl1bmNvdmVyIDIKCXNldGJpdAoJbG9nCglyZXRzdWIKCi8vIHNtYWxsQm94KCl2b2lkCiphYmlfcm91dGVfc21hbGxCb3g6CgkvLyBleGVjdXRlIHNtYWxsQm94KCl2b2lkCgljYWxsc3ViIHNtYWxsQm94CglpbnQgMQoJcmV0dXJuCgovLyBzbWFsbEJveCgpOiB2b2lkCnNtYWxsQm94OgoJcHJvdG8gMCAwCgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvcmVzb3VyY2UtcGFja2VyL3Jlc291cmNlLXBhY2tlci5hbGdvLnRzOjEzMwoJLy8gdGhpcy5zbWFsbEJveEtleS52YWx1ZSA9ICcnCglieXRlIDB4NzMgLy8gInMiCglkdXAKCWJveF9kZWwKCXBvcAoJYnl0ZSAweCAvLyAiIgoJYm94X3B1dAoJcmV0c3ViCgovLyBtZWRpdW1Cb3goKXZvaWQKKmFiaV9yb3V0ZV9tZWRpdW1Cb3g6CgkvLyBleGVjdXRlIG1lZGl1bUJveCgpdm9pZAoJY2FsbHN1YiBtZWRpdW1Cb3gKCWludCAxCglyZXR1cm4KCi8vIG1lZGl1bUJveCgpOiB2b2lkCm1lZGl1bUJveDoKCXByb3RvIDAgMAoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL3Jlc291cmNlLXBhY2tlci9yZXNvdXJjZS1wYWNrZXIuYWxnby50czoxMzcKCS8vIHRoaXMubWVkaXVtQm94S2V5LmNyZWF0ZSg1XzAwMCkKCWJ5dGUgMHg2ZCAvLyAibSIKCWludCA1XzAwMAoJYm94X2NyZWF0ZQoJcG9wCglyZXRzdWIKCi8vIGV4dGVybmFsQXBwQ2FsbCgpdm9pZAoqYWJpX3JvdXRlX2V4dGVybmFsQXBwQ2FsbDoKCS8vIGV4ZWN1dGUgZXh0ZXJuYWxBcHBDYWxsKCl2b2lkCgljYWxsc3ViIGV4dGVybmFsQXBwQ2FsbAoJaW50IDEKCXJldHVybgoKLy8gZXh0ZXJuYWxBcHBDYWxsKCk6IHZvaWQKZXh0ZXJuYWxBcHBDYWxsOgoJcHJvdG8gMCAwCgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvcmVzb3VyY2UtcGFja2VyL3Jlc291cmNlLXBhY2tlci5hbGdvLnRzOjE0MQoJLy8gc2VuZE1ldGhvZENhbGw8W10sIHZvaWQ+KHsKCS8vICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuZXh0ZXJuYWxBcHBJRC52YWx1ZSwKCS8vICAgICAgIG5hbWU6ICdkdW1teScsCgkvLyAgICAgfSkKCWl0eG5fYmVnaW4KCWludCBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgltZXRob2QgImR1bW15KCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9yZXNvdXJjZS1wYWNrZXIvcmVzb3VyY2UtcGFja2VyLmFsZ28udHM6MTQyCgkvLyBhcHBsaWNhdGlvbklEOiB0aGlzLmV4dGVybmFsQXBwSUQudmFsdWUKCWJ5dGUgMHg2NTc4NzQ2NTcyNmU2MTZjNDE3MDcwNDk0NCAvLyAiZXh0ZXJuYWxBcHBJRCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnQgMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglyZXRzdWIKCi8vIGFzc2V0VG90YWwoKXZvaWQKKmFiaV9yb3V0ZV9hc3NldFRvdGFsOgoJLy8gZXhlY3V0ZSBhc3NldFRvdGFsKCl2b2lkCgljYWxsc3ViIGFzc2V0VG90YWwKCWludCAxCglyZXR1cm4KCi8vIGFzc2V0VG90YWwoKTogdm9pZAphc3NldFRvdGFsOgoJcHJvdG8gMCAwCgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvcmVzb3VyY2UtcGFja2VyL3Jlc291cmNlLXBhY2tlci5hbGdvLnRzOjE0OAoJLy8gYXNzZXJ0KHRoaXMuYXNhLnZhbHVlLnRvdGFsKQoJYnl0ZSAweDYxNzM2MSAvLyAiYXNhIgoJYXBwX2dsb2JhbF9nZXQKCWFzc2V0X3BhcmFtc19nZXQgQXNzZXRUb3RhbAoJcG9wCglhc3NlcnQKCXJldHN1YgoKLy8gaGFzQXNzZXQoYWRkcmVzcyl2b2lkCiphYmlfcm91dGVfaGFzQXNzZXQ6CgkvLyBhZGRyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50IDMyCgk9PQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBoYXNBc3NldChhZGRyZXNzKXZvaWQKCWNhbGxzdWIgaGFzQXNzZXQKCWludCAxCglyZXR1cm4KCi8vIGhhc0Fzc2V0KGFkZHI6IEFkZHJlc3MpOiB2b2lkCmhhc0Fzc2V0OgoJcHJvdG8gMSAwCgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvcmVzb3VyY2UtcGFja2VyL3Jlc291cmNlLXBhY2tlci5hbGdvLnRzOjE1MgoJLy8gYXNzZXJ0KCFhZGRyLmlzT3B0ZWRJblRvQXNzZXQodGhpcy5hc2EudmFsdWUpKQoJZnJhbWVfZGlnIC0xIC8vIGFkZHI6IEFkZHJlc3MKCWJ5dGUgMHg2MTczNjEgLy8gImFzYSIKCWFwcF9nbG9iYWxfZ2V0Cglhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKCXN3YXAKCXBvcAoJIQoJYXNzZXJ0CglyZXRzdWIKCi8vIGV4dGVybmFsTG9jYWwoYWRkcmVzcyl2b2lkCiphYmlfcm91dGVfZXh0ZXJuYWxMb2NhbDoKCS8vIGFkZHI6IGFkZHJlc3MKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnQgMzIKCT09Cglhc3NlcnQKCgkvLyBleGVjdXRlIGV4dGVybmFsTG9jYWwoYWRkcmVzcyl2b2lkCgljYWxsc3ViIGV4dGVybmFsTG9jYWwKCWludCAxCglyZXR1cm4KCi8vIGV4dGVybmFsTG9jYWwoYWRkcjogQWRkcmVzcyk6IHZvaWQKZXh0ZXJuYWxMb2NhbDoKCXByb3RvIDEgMAoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL3Jlc291cmNlLXBhY2tlci9yZXNvdXJjZS1wYWNrZXIuYWxnby50czoxNTYKCS8vIGxvZyh0aGlzLmV4dGVybmFsQXBwSUQudmFsdWUubG9jYWxTdGF0ZShhZGRyLCAnbG9jYWxLZXknKSBhcyBieXRlcykKCWJ5dGUgMHg2NTc4NzQ2NTcyNmU2MTZjNDE3MDcwNDk0NCAvLyAiZXh0ZXJuYWxBcHBJRCIKCWFwcF9nbG9iYWxfZ2V0CglieXRlIDB4NmM2ZjYzNjE2YzRiNjU3OSAvLyAibG9jYWxLZXkiCglmcmFtZV9kaWcgLTEgLy8gYWRkcjogQWRkcmVzcwoJY292ZXIgMgoJYXBwX2xvY2FsX2dldF9leAoJYXNzZXJ0Cglsb2cKCXJldHN1YgoKKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbjoKCWludCAxCglyZXR1cm4KCipjcmVhdGVfTm9PcDoKCW1ldGhvZCAiY3JlYXRlQXBwbGljYXRpb24oKXZvaWQiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX2NyZWF0ZUFwcGxpY2F0aW9uCgllcnIKCipjYWxsX05vT3A6CgltZXRob2QgImJvb3RzdHJhcCgpdm9pZCIKCW1ldGhvZCAiYWRkcmVzc0JhbGFuY2UoYWRkcmVzcyl2b2lkIgoJbWV0aG9kICJzbWFsbEJveCgpdm9pZCIKCW1ldGhvZCAibWVkaXVtQm94KCl2b2lkIgoJbWV0aG9kICJleHRlcm5hbEFwcENhbGwoKXZvaWQiCgltZXRob2QgImFzc2V0VG90YWwoKXZvaWQiCgltZXRob2QgImhhc0Fzc2V0KGFkZHJlc3Mpdm9pZCIKCW1ldGhvZCAiZXh0ZXJuYWxMb2NhbChhZGRyZXNzKXZvaWQiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX2Jvb3RzdHJhcCAqYWJpX3JvdXRlX2FkZHJlc3NCYWxhbmNlICphYmlfcm91dGVfc21hbGxCb3ggKmFiaV9yb3V0ZV9tZWRpdW1Cb3ggKmFiaV9yb3V0ZV9leHRlcm5hbEFwcENhbGwgKmFiaV9yb3V0ZV9hc3NldFRvdGFsICphYmlfcm91dGVfaGFzQXNzZXQgKmFiaV9yb3V0ZV9leHRlcm5hbExvY2FsCgllcnI=", + "approval": "I3ByYWdtYSB2ZXJzaW9uIDkKaW50Y2Jsb2NrIDEgMCA2IDMyCmJ5dGVjYmxvY2sgMHg2NTc4NzQ2NTcyNmU2MTZjNDE3MDcwNDk0NCAweDYxNzM2MSAweGI4NDQ3YjM2IDB4NzMKCi8vIFRoaXMgVEVBTCB3YXMgZ2VuZXJhdGVkIGJ5IFRFQUxTY3JpcHQgdjAuMTA2LjMKLy8gaHR0cHM6Ly9naXRodWIuY29tL2FsZ29yYW5kZm91bmRhdGlvbi9URUFMU2NyaXB0CgovLyBUaGlzIGNvbnRyYWN0IGlzIGNvbXBsaWFudCB3aXRoIGFuZC9vciBpbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgQVJDczogWyBBUkM0IF0KCi8vIFRoZSBmb2xsb3dpbmcgdGVuIGxpbmVzIG9mIFRFQUwgaGFuZGxlIGluaXRpYWwgcHJvZ3JhbSBmbG93Ci8vIFRoaXMgcGF0dGVybiBpcyB1c2VkIHRvIG1ha2UgaXQgZWFzeSBmb3IgYW55b25lIHRvIHBhcnNlIHRoZSBzdGFydCBvZiB0aGUgcHJvZ3JhbSBhbmQgZGV0ZXJtaW5lIGlmIGEgc3BlY2lmaWMgYWN0aW9uIGlzIGFsbG93ZWQKLy8gSGVyZSwgYWN0aW9uIHJlZmVycyB0byB0aGUgT25Db21wbGV0ZSBpbiBjb21iaW5hdGlvbiB3aXRoIHdoZXRoZXIgdGhlIGFwcCBpcyBiZWluZyBjcmVhdGVkIG9yIGNhbGxlZAovLyBFdmVyeSBwb3NzaWJsZSBhY3Rpb24gZm9yIHRoaXMgY29udHJhY3QgaXMgcmVwcmVzZW50ZWQgaW4gdGhlIHN3aXRjaCBzdGF0ZW1lbnQKLy8gSWYgdGhlIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGNvbnRyYWN0LCBpdHMgcmVzcGVjdGl2ZSBicmFuY2ggd2lsbCBiZSAiKk5PVF9JTVBMRU1FTlRFRCIgd2hpY2gganVzdCBjb250YWlucyAiZXJyIgp0eG4gQXBwbGljYXRpb25JRAohCmludGMgMiAvLyA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY3JlYXRlX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVECgoqTk9UX0lNUExFTUVOVEVEOgoJLy8gVGhlIHJlcXVlc3RlZCBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgY29udHJhY3QuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3QgT25Db21wbGV0ZT8gRGlkIHlvdSBzZXQgeW91ciBhcHAgSUQ/CgllcnIKCi8vIGJvb3RzdHJhcCgpdm9pZAoqYWJpX3JvdXRlX2Jvb3RzdHJhcDoKCS8vIGV4ZWN1dGUgYm9vdHN0cmFwKCl2b2lkCgljYWxsc3ViIGJvb3RzdHJhcAoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gYm9vdHN0cmFwKCk6IHZvaWQKYm9vdHN0cmFwOgoJcHJvdG8gMCAwCgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvcmVzb3VyY2UtcGFja2VyL3Jlc291cmNlLXBhY2tlci5hbGdvLnRzOjE0MAoJLy8gc2VuZE1ldGhvZENhbGw8W10sIHZvaWQ+KHsKCS8vICAgICAgIG5hbWU6ICdjcmVhdGVBcHBsaWNhdGlvbicsCgkvLyAgICAgICBhcHByb3ZhbFByb2dyYW06IEV4dGVybmFsQXBwLmFwcHJvdmFsUHJvZ3JhbSgpLAoJLy8gICAgICAgY2xlYXJTdGF0ZVByb2dyYW06IEV4dGVybmFsQXBwLmNsZWFyUHJvZ3JhbSgpLAoJLy8gICAgICAgbG9jYWxOdW1CeXRlU2xpY2U6IEV4dGVybmFsQXBwLnNjaGVtYS5sb2NhbC5udW1CeXRlU2xpY2UsCgkvLyAgICAgICBnbG9iYWxOdW1CeXRlU2xpY2U6IEV4dGVybmFsQXBwLnNjaGVtYS5nbG9iYWwubnVtQnl0ZVNsaWNlLAoJLy8gICAgICAgZ2xvYmFsTnVtVWludDogRXh0ZXJuYWxBcHAuc2NoZW1hLmdsb2JhbC5udW1VaW50LAoJLy8gICAgICAgbG9jYWxOdW1VaW50OiBFeHRlcm5hbEFwcC5zY2hlbWEubG9jYWwubnVtVWludCwKCS8vICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAyIC8vICBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9yZXNvdXJjZS1wYWNrZXIvcmVzb3VyY2UtcGFja2VyLmFsZ28udHM6MTQyCgkvLyBhcHByb3ZhbFByb2dyYW06IEV4dGVybmFsQXBwLmFwcHJvdmFsUHJvZ3JhbSgpCglwdXNoYnl0ZXMgMHgwYTIwMDMwMTAwMDYyNjA1MDY2MjZmNzg0YjY1NzkwNGI4NDQ3YjM2MDM2NjZmNmYwMzYxNzM2MTAwMzExODE0MjQwYjMxMTkwODhkMGMwMTNiMDE3MTAwMDAwMDAwMDAwMDAwMDAwMTMyMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDg4MDAwMjIyNDM4YTAwMDAzMTAwODAwODZjNmY2MzYxNmM0YjY1NzkyYTY2ODk4ODAwMDIyMjQzOGEwMDAwODk4ODAwMDIyMjQzOGEwMDAwMDA4OTMxMTYyMjA5NDkzODEwMjIxMjQ0ODgwMDAyMjI0MzhhMDEwMDI4NDliYzQ4MmFiZjg5ODgwMDAyMjI0MzhhMDAwMDJiYjE4MTAzYjIxMDIyYjIyMjIzYjIwMWIzYjQzYzY3ODk4ODAwMDIyMjQzOGEwMDAwMzEwMDJiNjQ3MDAwNGM0ODE0NDQ4OTMxMTYyMjA5NDkzODEwMjIxMjQ0ODgwMDAyMjI0MzhhMDEwMDI3MDQ0OThiZmYzODA3MzIwYTEyNDRiMTI0YjIxMDI5YjIxYTgwNWQwYTIwMDEwMTMxMTgxNDgxMDYwYjMxMTkwODhkMGMwMDI4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDFhMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDg4MDAwMjIyNDM4YTAwMDA4MDA4NjU2ZDcwNzQ3OTQyNmY3ODgxMDBiOTQ4ODkyMjQzODAwNGI4NDQ3YjM2MzYxYTAwOGUwMWZmZjEwMDgwMDRhNjhiZDI5NzM2MWEwMDhlMDFmZmNjMDBiMjFlODAwMTBhYjIxZjIzYjIwMWIzYjQzZDhjMDA4YjAwNzIwODQ4OGMwMWIxMjJiMjEwOGIwMWIyMDc4YmZmMzgwOGIyMDgyM2IyMDFiM2IxMjRiMjEwODAwNGE2OGJkMjk3YjIxYThiMDBiMjE4MjNiMjAxYjM4OTIyNDMyOTM2MWEwMDhlMDFmZmY2MDA4MDA0YTMwY2U3ZmY4MDA0NDRkMGRhMGQ4MDA0ZDYxZTQyNTU4MDA0YTY1YWFiZmU4MDA0NjU1YzVlMDI4MDA0MWE0NTZhY2EzNjFhMDA4ZTA2ZmVhOGZlYjFmZWJiZmVkNGZlZWRmZjAwMDA4MDA0MDFhM2EzZmYzNjFhMDA4ZTAxZmU4MzAwCglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbQoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL3Jlc291cmNlLXBhY2tlci9yZXNvdXJjZS1wYWNrZXIuYWxnby50czoxNDMKCS8vIGNsZWFyU3RhdGVQcm9ncmFtOiBFeHRlcm5hbEFwcC5jbGVhclByb2dyYW0oKQoJcHVzaGJ5dGVzIDB4MGEKCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9yZXNvdXJjZS1wYWNrZXIvcmVzb3VyY2UtcGFja2VyLmFsZ28udHM6MTQ0CgkvLyBsb2NhbE51bUJ5dGVTbGljZTogRXh0ZXJuYWxBcHAuc2NoZW1hLmxvY2FsLm51bUJ5dGVTbGljZQoJaW50YyAwIC8vIDEKCWl0eG5fZmllbGQgTG9jYWxOdW1CeXRlU2xpY2UKCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9yZXNvdXJjZS1wYWNrZXIvcmVzb3VyY2UtcGFja2VyLmFsZ28udHM6MTQ1CgkvLyBnbG9iYWxOdW1CeXRlU2xpY2U6IEV4dGVybmFsQXBwLnNjaGVtYS5nbG9iYWwubnVtQnl0ZVNsaWNlCglpbnRjIDEgLy8gMAoJaXR4bl9maWVsZCBHbG9iYWxOdW1CeXRlU2xpY2UKCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9yZXNvdXJjZS1wYWNrZXIvcmVzb3VyY2UtcGFja2VyLmFsZ28udHM6MTQ2CgkvLyBnbG9iYWxOdW1VaW50OiBFeHRlcm5hbEFwcC5zY2hlbWEuZ2xvYmFsLm51bVVpbnQKCWludGMgMCAvLyAxCglpdHhuX2ZpZWxkIEdsb2JhbE51bVVpbnQKCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9yZXNvdXJjZS1wYWNrZXIvcmVzb3VyY2UtcGFja2VyLmFsZ28udHM6MTQ3CgkvLyBsb2NhbE51bVVpbnQ6IEV4dGVybmFsQXBwLnNjaGVtYS5sb2NhbC5udW1VaW50CglpbnRjIDEgLy8gMAoJaXR4bl9maWVsZCBMb2NhbE51bVVpbnQKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDEgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvcmVzb3VyY2UtcGFja2VyL3Jlc291cmNlLXBhY2tlci5hbGdvLnRzOjE1MAoJLy8gdGhpcy5leHRlcm5hbEFwcElELnZhbHVlID0gdGhpcy5pdHhuLmNyZWF0ZWRBcHBsaWNhdGlvbklECglieXRlYyAwIC8vICAiZXh0ZXJuYWxBcHBJRCIKCWl0eG4gQ3JlYXRlZEFwcGxpY2F0aW9uSUQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvcmVzb3VyY2UtcGFja2VyL3Jlc291cmNlLXBhY2tlci5hbGdvLnRzOjE1MgoJLy8gdGhpcy5hc2EudmFsdWUgPSBzZW5kQXNzZXRDcmVhdGlvbih7CgkvLyAgICAgICBjb25maWdBc3NldFRvdGFsOiAxLAoJLy8gICAgIH0pCglieXRlYyAxIC8vICAiYXNhIgoJaXR4bl9iZWdpbgoJcHVzaGludCAzIC8vIGFjZmcKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9yZXNvdXJjZS1wYWNrZXIvcmVzb3VyY2UtcGFja2VyLmFsZ28udHM6MTUzCgkvLyBjb25maWdBc3NldFRvdGFsOiAxCglpbnRjIDAgLy8gMQoJaXR4bl9maWVsZCBDb25maWdBc3NldFRvdGFsCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAxIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBDcmVhdGVkQXNzZXRJRAoJYXBwX2dsb2JhbF9wdXQKCXJldHN1YgoKLy8gYWRkcmVzc0JhbGFuY2UoYWRkcmVzcyl2b2lkCiphYmlfcm91dGVfYWRkcmVzc0JhbGFuY2U6CgkvLyBhZGRyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyAzIC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKGFkZHIpIGZvciBhZGRyZXNzQmFsYW5jZSBtdXN0IGJlIGEgYWRkcmVzcwoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBhZGRyZXNzQmFsYW5jZShhZGRyZXNzKXZvaWQKCWNhbGxzdWIgYWRkcmVzc0JhbGFuY2UKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIGFkZHJlc3NCYWxhbmNlKGFkZHI6IEFkZHJlc3MpOiB2b2lkCmFkZHJlc3NCYWxhbmNlOgoJcHJvdG8gMSAwCgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvcmVzb3VyY2UtcGFja2VyL3Jlc291cmNlLXBhY2tlci5hbGdvLnRzOjE1OAoJLy8gbG9nKHJhd0J5dGVzKGFkZHIuaXNJbkxlZGdlcikpCglmcmFtZV9kaWcgLTEgLy8gYWRkcjogQWRkcmVzcwoJYWNjdF9wYXJhbXNfZ2V0IEFjY3RCYWxhbmNlCglzd2FwCglwb3AKCXB1c2hieXRlcyAweDAwCglpbnRjIDEgLy8gMAoJdW5jb3ZlciAyCglzZXRiaXQKCWxvZwoJcmV0c3ViCgovLyBzbWFsbEJveCgpdm9pZAoqYWJpX3JvdXRlX3NtYWxsQm94OgoJLy8gZXhlY3V0ZSBzbWFsbEJveCgpdm9pZAoJY2FsbHN1YiBzbWFsbEJveAoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gc21hbGxCb3goKTogdm9pZApzbWFsbEJveDoKCXByb3RvIDAgMAoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL3Jlc291cmNlLXBhY2tlci9yZXNvdXJjZS1wYWNrZXIuYWxnby50czoxNjIKCS8vIHRoaXMuc21hbGxCb3hLZXkudmFsdWUgPSAnJwoJYnl0ZWMgMyAvLyAgInMiCglkdXAKCWJveF9kZWwKCXBvcAoJcHVzaGJ5dGVzIDB4IC8vICIiCglib3hfcHV0CglyZXRzdWIKCi8vIG1lZGl1bUJveCgpdm9pZAoqYWJpX3JvdXRlX21lZGl1bUJveDoKCS8vIGV4ZWN1dGUgbWVkaXVtQm94KCl2b2lkCgljYWxsc3ViIG1lZGl1bUJveAoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gbWVkaXVtQm94KCk6IHZvaWQKbWVkaXVtQm94OgoJcHJvdG8gMCAwCgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvcmVzb3VyY2UtcGFja2VyL3Jlc291cmNlLXBhY2tlci5hbGdvLnRzOjE2NgoJLy8gdGhpcy5tZWRpdW1Cb3hLZXkuY3JlYXRlKDVfMDAwKQoJcHVzaGJ5dGVzIDB4NmQgLy8gIm0iCglwdXNoaW50IDVfMDAwCglib3hfY3JlYXRlCglwb3AKCXJldHN1YgoKLy8gZXh0ZXJuYWxBcHBDYWxsKCl2b2lkCiphYmlfcm91dGVfZXh0ZXJuYWxBcHBDYWxsOgoJLy8gZXhlY3V0ZSBleHRlcm5hbEFwcENhbGwoKXZvaWQKCWNhbGxzdWIgZXh0ZXJuYWxBcHBDYWxsCglpbnRjIDAgLy8gMQoJcmV0dXJuCgovLyBleHRlcm5hbEFwcENhbGwoKTogdm9pZApleHRlcm5hbEFwcENhbGw6Cglwcm90byAwIDAKCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9yZXNvdXJjZS1wYWNrZXIvcmVzb3VyY2UtcGFja2VyLmFsZ28udHM6MTcwCgkvLyBzZW5kTWV0aG9kQ2FsbDxbXSwgdm9pZD4oewoJLy8gICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5leHRlcm5hbEFwcElELnZhbHVlLAoJLy8gICAgICAgbmFtZTogJ2R1bW15JywKCS8vICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglwdXNoYnl0ZXMgMHhhMzBjZTdmZiAvLyBtZXRob2QgImR1bW15KCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9yZXNvdXJjZS1wYWNrZXIvcmVzb3VyY2UtcGFja2VyLmFsZ28udHM6MTcxCgkvLyBhcHBsaWNhdGlvbklEOiB0aGlzLmV4dGVybmFsQXBwSUQudmFsdWUKCWJ5dGVjIDAgLy8gICJleHRlcm5hbEFwcElEIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMSAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCXJldHN1YgoKLy8gYXNzZXRUb3RhbCgpdm9pZAoqYWJpX3JvdXRlX2Fzc2V0VG90YWw6CgkvLyBleGVjdXRlIGFzc2V0VG90YWwoKXZvaWQKCWNhbGxzdWIgYXNzZXRUb3RhbAoJaW50YyAwIC8vIDEKCXJldHVybgoKLy8gYXNzZXRUb3RhbCgpOiB2b2lkCmFzc2V0VG90YWw6Cglwcm90byAwIDAKCgkvLyB0ZXN0cy9leGFtcGxlLWNvbnRyYWN0cy9yZXNvdXJjZS1wYWNrZXIvcmVzb3VyY2UtcGFja2VyLmFsZ28udHM6MTc3CgkvLyBhc3NlcnQodGhpcy5hc2EudmFsdWUudG90YWwpCglieXRlYyAxIC8vICAiYXNhIgoJYXBwX2dsb2JhbF9nZXQKCWFzc2V0X3BhcmFtc19nZXQgQXNzZXRUb3RhbAoJcG9wCglhc3NlcnQKCXJldHN1YgoKLy8gaGFzQXNzZXQoYWRkcmVzcyl2b2lkCiphYmlfcm91dGVfaGFzQXNzZXQ6CgkvLyBhZGRyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyAzIC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKGFkZHIpIGZvciBoYXNBc3NldCBtdXN0IGJlIGEgYWRkcmVzcwoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBoYXNBc3NldChhZGRyZXNzKXZvaWQKCWNhbGxzdWIgaGFzQXNzZXQKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIGhhc0Fzc2V0KGFkZHI6IEFkZHJlc3MpOiB2b2lkCmhhc0Fzc2V0OgoJcHJvdG8gMSAwCgoJLy8gdGVzdHMvZXhhbXBsZS1jb250cmFjdHMvcmVzb3VyY2UtcGFja2VyL3Jlc291cmNlLXBhY2tlci5hbGdvLnRzOjE4MQoJLy8gYXNzZXJ0KCFhZGRyLmlzT3B0ZWRJblRvQXNzZXQodGhpcy5hc2EudmFsdWUpKQoJZnJhbWVfZGlnIC0xIC8vIGFkZHI6IEFkZHJlc3MKCWJ5dGVjIDEgLy8gICJhc2EiCglhcHBfZ2xvYmFsX2dldAoJYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCglzd2FwCglwb3AKCSEKCWFzc2VydAoJcmV0c3ViCgovLyBleHRlcm5hbExvY2FsKGFkZHJlc3Mpdm9pZAoqYWJpX3JvdXRlX2V4dGVybmFsTG9jYWw6CgkvLyBhZGRyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyAzIC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKGFkZHIpIGZvciBleHRlcm5hbExvY2FsIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIGV4dGVybmFsTG9jYWwoYWRkcmVzcyl2b2lkCgljYWxsc3ViIGV4dGVybmFsTG9jYWwKCWludGMgMCAvLyAxCglyZXR1cm4KCi8vIGV4dGVybmFsTG9jYWwoYWRkcjogQWRkcmVzcyk6IHZvaWQKZXh0ZXJuYWxMb2NhbDoKCXByb3RvIDEgMAoKCS8vIHRlc3RzL2V4YW1wbGUtY29udHJhY3RzL3Jlc291cmNlLXBhY2tlci9yZXNvdXJjZS1wYWNrZXIuYWxnby50czoxODUKCS8vIGxvZyh0aGlzLmV4dGVybmFsQXBwSUQudmFsdWUubG9jYWxTdGF0ZShhZGRyLCAnbG9jYWxLZXknKSBhcyBieXRlcykKCWJ5dGVjIDAgLy8gICJleHRlcm5hbEFwcElEIgoJYXBwX2dsb2JhbF9nZXQKCXB1c2hieXRlcyAweDZjNmY2MzYxNmM0YjY1NzkgLy8gImxvY2FsS2V5IgoJZnJhbWVfZGlnIC0xIC8vIGFkZHI6IEFkZHJlc3MKCWNvdmVyIDIKCWFwcF9sb2NhbF9nZXRfZXgKCgkvLyBsb2NhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogdGhpcy5leHRlcm5hbEFwcElELnZhbHVlLmxvY2FsU3RhdGUoYWRkciwgJ2xvY2FsS2V5JykKCWFzc2VydAoJbG9nCglyZXRzdWIKCiphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb246CglpbnRjIDAgLy8gMQoJcmV0dXJuCgoqY3JlYXRlX05vT3A6CglieXRlYyAyIC8vICBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4YmVjNzZkODcgLy8gbWV0aG9kICJib290c3RyYXAoKXZvaWQiCglwdXNoYnl0ZXMgMHgyNmRiOWRiNyAvLyBtZXRob2QgImFkZHJlc3NCYWxhbmNlKGFkZHJlc3Mpdm9pZCIKCXB1c2hieXRlcyAweDMwOWVlMDczIC8vIG1ldGhvZCAic21hbGxCb3goKXZvaWQiCglwdXNoYnl0ZXMgMHhiNTY2OGUxNyAvLyBtZXRob2QgIm1lZGl1bUJveCgpdm9pZCIKCXB1c2hieXRlcyAweGE5ZDgzNWUwIC8vIG1ldGhvZCAiZXh0ZXJuYWxBcHBDYWxsKCl2b2lkIgoJcHVzaGJ5dGVzIDB4MjExNjI0YTAgLy8gbWV0aG9kICJhc3NldFRvdGFsKCl2b2lkIgoJcHVzaGJ5dGVzIDB4YWEzOGFlOTEgLy8gbWV0aG9kICJoYXNBc3NldChhZGRyZXNzKXZvaWQiCglwdXNoYnl0ZXMgMHgyNGQxZDAxMyAvLyBtZXRob2QgImV4dGVybmFsTG9jYWwoYWRkcmVzcyl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9ib290c3RyYXAgKmFiaV9yb3V0ZV9hZGRyZXNzQmFsYW5jZSAqYWJpX3JvdXRlX3NtYWxsQm94ICphYmlfcm91dGVfbWVkaXVtQm94ICphYmlfcm91dGVfZXh0ZXJuYWxBcHBDYWxsICphYmlfcm91dGVfYXNzZXRUb3RhbCAqYWJpX3JvdXRlX2hhc0Fzc2V0ICphYmlfcm91dGVfZXh0ZXJuYWxMb2NhbAoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycg==", "clear": "I3ByYWdtYSB2ZXJzaW9uIDk=" }, "contract": { diff --git a/tests/example-contracts/resource-packer/resource-packer.algo.ts b/tests/example-contracts/resource-packer/resource-packer.algo.ts index d1e986605..847c79f87 100644 --- a/tests/example-contracts/resource-packer/resource-packer.algo.ts +++ b/tests/example-contracts/resource-packer/resource-packer.algo.ts @@ -15,7 +15,7 @@ class ExternalApp extends Contract { dummy(): void {} error(): void { - throw Error() + throw Error('Some error') } boxWithPayment(_payment: PayTxn): void { @@ -31,6 +31,35 @@ class ExternalApp extends Contract { senderAssetBalance(): void { assert(!this.txn.sender.isOptedInToAsset(this.asa.value)) } + + createBoxInNewApp(mbrPayment: PayTxn): void { + verifyPayTxn(mbrPayment, { + receiver: this.app.address, + }) + + sendMethodCall<[], void>({ + name: 'createApplication', + approvalProgram: InnerBoxApp.approvalProgram(), + clearStateProgram: InnerBoxApp.clearProgram(), + }) + + const appId = this.itxn.createdApplicationID + const appAddr = appId.address + + sendPayment({ receiver: appAddr, amount: mbrPayment.amount }) + + sendMethodCall({ + applicationID: appId, + }) + } +} + +class InnerBoxApp extends Contract { + emptyBox = BoxKey>() + + createEmptyBox(): void { + this.emptyBox.create() + } } // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars diff --git a/tests/example-contracts/resource-packer/tsconfig.json b/tests/example-contracts/resource-packer/tsconfig.json new file mode 100644 index 000000000..5e3106d17 --- /dev/null +++ b/tests/example-contracts/resource-packer/tsconfig.json @@ -0,0 +1,103 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig to read more about this file */ + + /* Projects */ + // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ + + /* Language and Environment */ + "target": "es2016", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + // "jsx": "preserve", /* Specify what JSX code is generated. */ + "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ + // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ + + /* Modules */ + "module": "commonjs", /* Specify what module code is generated. */ + // "rootDir": "./", /* Specify the root folder within your source files. */ + // "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ + // "types": [], /* Specify type package names to be included without being referenced in a source file. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ + // "resolveJsonModule": true, /* Enable importing .json files. */ + // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ + + /* JavaScript Support */ + // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ + // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ + + /* Emit */ + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ + // "outDir": "./", /* Specify an output folder for all emitted files. */ + // "removeComments": true, /* Disable emitting comments. */ + // "noEmit": true, /* Disable emitting files from a compilation. */ + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ + + /* Interop Constraints */ + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ + + /* Type Checking */ + "strict": true, /* Enable all strict type-checking options. */ + // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ + // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + "skipLibCheck": true /* Skip type checking all .d.ts files. */ + } +}