{ "name": "AgentMarketRegistry", "structs": { "ServiceRecord": [ { "name": "serviceId", "type": "uint64" }, { "name": "name", "type": "string" }, { "name": "category", "type": "string" }, { "name": "priceMicroAlgos", "type": "uint64" }, { "name": "requiresInput", "type": "bool" }, { "name": "baseRateMicroAlgos", "type": "uint64" }, { "name": "incrementPerBlockMicroAlgos", "type": "uint64" }, { "name": "blockSize", "type": "uint64" }, { "name": "providerAddress", "type": "address" }, { "name": "completedJobs", "type": "uint64" }, { "name": "active", "type": "bool" } ] }, "methods": [ { "name": "registerService", "args": [ { "type": "string", "name": "name" }, { "type": "string", "name": "category" }, { "type": "uint64", "name": "priceMicroAlgos" }, { "type": "bool", "name": "requiresInput" }, { "type": "uint64", "name": "baseRateMicroAlgos" }, { "type": "uint64", "name": "incrementPerBlockMicroAlgos" }, { "type": "uint64", "name": "blockSize" } ], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "updateServicePrice", "args": [ { "type": "uint64", "name": "serviceId" }, { "type": "uint64", "name": "newPriceMicroAlgos" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "deactivateService", "args": [ { "type": "uint64", "name": "serviceId" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "recordCompletion", "args": [ { "type": "uint64", "name": "serviceId" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} } ], "arcs": [ 22, 28 ], "networks": {}, "state": { "schema": { "global": { "ints": 1, "bytes": 0 }, "local": { "ints": 0, "bytes": 0 } }, "keys": { "global": { "nextServiceId": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "bmV4dFNlcnZpY2VJZA==" } }, "local": {}, "box": {} }, "maps": { "global": {}, "local": {}, "box": { "services": { "keyType": "uint64", "valueType": "ServiceRecord", "prefix": "c2VydmljZXM=" } } } }, "bareActions": { "create": [ "NoOp" ], "call": [] }, "sourceInfo": { "approval": { "sourceInfo": [ { "pc": [ 391 ], "errorMessage": "Only admin can record completion" }, { "pc": [ 362 ], "errorMessage": "Only provider can deactivate" }, { "pc": [ 326 ], "errorMessage": "Only provider can update price" }, { "pc": [ 315, 351, 400 ], "errorMessage": "Service does not exist" }, { "pc": [ 177 ], "errorMessage": "check GlobalState exists" }, { "pc": [ 324, 331, 360, 374, 405, 413 ], "errorMessage": "index out of bounds" }, { "pc": [ 101, 117 ], "errorMessage": "invalid array length header" }, { "pc": [ 144 ], "errorMessage": "invalid number of bytes for arc4.bool" }, { "pc": [ 108, 124 ], "errorMessage": "invalid number of bytes for arc4.dynamic_array" }, { "pc": [ 135, 154, 163, 172, 296, 305, 341, 384 ], "errorMessage": "invalid number of bytes for arc4.uint64" } ], "pcOffsetMethod": "none" }, "clear": { "sourceInfo": [], "pcOffsetMethod": "none" } }, "source": { "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYXJjNC9pbmRleC5kLnRzOjpDb250cmFjdC5hcHByb3ZhbFByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBpbnRjYmxvY2sgMSA4IDAgMgogICAgYnl0ZWNibG9jayAic2VydmljZXMiICJuZXh0U2VydmljZUlkIgogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGJueiBtYWluX2FmdGVyX2lmX2Vsc2VAMgogICAgLy8gc21hcnRfY29udHJhY3RzL2FnZW50X21hcmtldF9jb250cmFjdHMvY29udHJhY3QuYWxnby50czoxOAogICAgLy8gbmV4dFNlcnZpY2VJZCA9IEdsb2JhbFN0YXRlPHVpbnQ2ND4oeyBpbml0aWFsVmFsdWU6IDEgfSk7CiAgICBieXRlY18xIC8vICJuZXh0U2VydmljZUlkIgogICAgaW50Y18wIC8vIDEKICAgIGFwcF9nbG9iYWxfcHV0CgptYWluX2FmdGVyX2lmX2Vsc2VAMjoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hZ2VudF9tYXJrZXRfY29udHJhY3RzL2NvbnRyYWN0LmFsZ28udHM6MTcKICAgIC8vIGV4cG9ydCBjbGFzcyBBZ2VudE1hcmtldFJlZ2lzdHJ5IGV4dGVuZHMgQ29udHJhY3QgewogICAgdHhuIE51bUFwcEFyZ3MKICAgIGJ6IG1haW5fX19hbGdvdHNfXy5kZWZhdWx0Q3JlYXRlQDEzCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQKICAgIHB1c2hieXRlc3MgMHhiZjYzMGQ0YyAweDMyMGFhMjAzIDB4OWYyZDllOTQgMHg2MzJjNTJhZCAvLyBtZXRob2QgInJlZ2lzdGVyU2VydmljZShzdHJpbmcsc3RyaW5nLHVpbnQ2NCxib29sLHVpbnQ2NCx1aW50NjQsdWludDY0KXVpbnQ2NCIsIG1ldGhvZCAidXBkYXRlU2VydmljZVByaWNlKHVpbnQ2NCx1aW50NjQpdm9pZCIsIG1ldGhvZCAiZGVhY3RpdmF0ZVNlcnZpY2UodWludDY0KXZvaWQiLCBtZXRob2QgInJlY29yZENvbXBsZXRpb24odWludDY0KXZvaWQiCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAwCiAgICBtYXRjaCByZWdpc3RlclNlcnZpY2UgdXBkYXRlU2VydmljZVByaWNlIGRlYWN0aXZhdGVTZXJ2aWNlIHJlY29yZENvbXBsZXRpb24KICAgIGVycgoKbWFpbl9fX2FsZ290c19fLmRlZmF1bHRDcmVhdGVAMTM6CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWdlbnRfbWFya2V0X2NvbnRyYWN0cy9jb250cmFjdC5hbGdvLnRzOjE3CiAgICAvLyBleHBvcnQgY2xhc3MgQWdlbnRNYXJrZXRSZWdpc3RyeSBleHRlbmRzIENvbnRyYWN0IHsKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICAhCiAgICAmJgogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzL2FnZW50X21hcmtldF9jb250cmFjdHMvY29udHJhY3QuYWxnby50czo6QWdlbnRNYXJrZXRSZWdpc3RyeS5yZWdpc3RlclNlcnZpY2Vbcm91dGluZ10oKSAtPiB2b2lkOgpyZWdpc3RlclNlcnZpY2U6CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWdlbnRfbWFya2V0X2NvbnRyYWN0cy9jb250cmFjdC5hbGdvLnRzOjIxLTI5CiAgICAvLyBwdWJsaWMgcmVnaXN0ZXJTZXJ2aWNlKAogICAgLy8gICBuYW1lOiBzdHJpbmcsCiAgICAvLyAgIGNhdGVnb3J5OiBzdHJpbmcsCiAgICAvLyAgIHByaWNlTWljcm9BbGdvczogdWludDY0LAogICAgLy8gICByZXF1aXJlc0lucHV0OiBib29sZWFuLAogICAgLy8gICBiYXNlUmF0ZU1pY3JvQWxnb3M6IHVpbnQ2NCwKICAgIC8vICAgaW5jcmVtZW50UGVyQmxvY2tNaWNyb0FsZ29zOiB1aW50NjQsCiAgICAvLyAgIGJsb2NrU2l6ZTogdWludDY0CiAgICAvLyApOiB1aW50NjQgewogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwCiAgICBpbnRjXzIgLy8gMAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgYXJyYXkgbGVuZ3RoIGhlYWRlcgogICAgaW50Y18zIC8vIDIKICAgICsKICAgIGRpZyAxCiAgICBsZW4KICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuZHluYW1pY19hcnJheTxhcmM0LnVpbnQ4PgogICAgZXh0cmFjdCAyIDAKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGR1cAogICAgaW50Y18yIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIGludGNfMyAvLyAyCiAgICArCiAgICBkaWcgMQogICAgbGVuCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LmR5bmFtaWNfYXJyYXk8YXJjNC51aW50OD4KICAgIGV4dHJhY3QgMiAwCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAzCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18xIC8vIDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDY0CiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA0CiAgICBkdXAKICAgIGxlbgogICAgaW50Y18wIC8vIDEKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuYm9vbAogICAgaW50Y18yIC8vIDAKICAgIGdldGJpdAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQogICAgZHVwCiAgICBsZW4KICAgIGludGNfMSAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNgogICAgZHVwCiAgICBsZW4KICAgIGludGNfMSAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNwogICAgZHVwCiAgICBsZW4KICAgIGludGNfMSAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgLy8gc21hcnRfY29udHJhY3RzL2FnZW50X21hcmtldF9jb250cmFjdHMvY29udHJhY3QuYWxnby50czozMAogICAgLy8gY29uc3QgaWQgPSB0aGlzLm5leHRTZXJ2aWNlSWQudmFsdWU7CiAgICBpbnRjXzIgLy8gMAogICAgLy8gc21hcnRfY29udHJhY3RzL2FnZW50X21hcmtldF9jb250cmFjdHMvY29udHJhY3QuYWxnby50czoxOAogICAgLy8gbmV4dFNlcnZpY2VJZCA9IEdsb2JhbFN0YXRlPHVpbnQ2ND4oeyBpbml0aWFsVmFsdWU6IDEgfSk7CiAgICBieXRlY18xIC8vICJuZXh0U2VydmljZUlkIgogICAgLy8gc21hcnRfY29udHJhY3RzL2FnZW50X21hcmtldF9jb250cmFjdHMvY29udHJhY3QuYWxnby50czozMAogICAgLy8gY29uc3QgaWQgPSB0aGlzLm5leHRTZXJ2aWNlSWQudmFsdWU7CiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIEdsb2JhbFN0YXRlIGV4aXN0cwogICAgLy8gc21hcnRfY29udHJhY3RzL2FnZW50X21hcmtldF9jb250cmFjdHMvY29udHJhY3QuYWxnby50czozMQogICAgLy8gdGhpcy5uZXh0U2VydmljZUlkLnZhbHVlID0gaWQgKyAxOwogICAgZHVwCiAgICBpbnRjXzAgLy8gMQogICAgKwogICAgLy8gc21hcnRfY29udHJhY3RzL2FnZW50X21hcmtldF9jb250cmFjdHMvY29udHJhY3QuYWxnby50czoxOAogICAgLy8gbmV4dFNlcnZpY2VJZCA9IEdsb2JhbFN0YXRlPHVpbnQ2ND4oeyBpbml0aWFsVmFsdWU6IDEgfSk7CiAgICBieXRlY18xIC8vICJuZXh0U2VydmljZUlkIgogICAgLy8gc21hcnRfY29udHJhY3RzL2FnZW50X21hcmtldF9jb250cmFjdHMvY29udHJhY3QuYWxnby50czozMQogICAgLy8gdGhpcy5uZXh0U2VydmljZUlkLnZhbHVlID0gaWQgKyAxOwogICAgc3dhcAogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hZ2VudF9tYXJrZXRfY29udHJhY3RzL2NvbnRyYWN0LmFsZ28udHM6NDIKICAgIC8vIHByb3ZpZGVyQWRkcmVzczogVHhuLnNlbmRlciwKICAgIHR4biBTZW5kZXIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hZ2VudF9tYXJrZXRfY29udHJhY3RzL2NvbnRyYWN0LmFsZ28udHM6MzMtNDUKICAgIC8vIGNvbnN0IHJlY29yZDogU2VydmljZVJlY29yZCA9IHsKICAgIC8vICAgc2VydmljZUlkOiBpZCwKICAgIC8vICAgbmFtZTogbmFtZSwKICAgIC8vICAgY2F0ZWdvcnk6IGNhdGVnb3J5LAogICAgLy8gICBwcmljZU1pY3JvQWxnb3M6IHByaWNlTWljcm9BbGdvcywKICAgIC8vICAgcmVxdWlyZXNJbnB1dDogcmVxdWlyZXNJbnB1dCwKICAgIC8vICAgYmFzZVJhdGVNaWNyb0FsZ29zOiBiYXNlUmF0ZU1pY3JvQWxnb3MsCiAgICAvLyAgIGluY3JlbWVudFBlckJsb2NrTWljcm9BbGdvczogaW5jcmVtZW50UGVyQmxvY2tNaWNyb0FsZ29zLAogICAgLy8gICBibG9ja1NpemU6IGJsb2NrU2l6ZSwKICAgIC8vICAgcHJvdmlkZXJBZGRyZXNzOiBUeG4uc2VuZGVyLAogICAgLy8gICBjb21wbGV0ZWRKb2JzOiAwLAogICAgLy8gICBhY3RpdmU6IHRydWUKICAgIC8vIH07CiAgICBzd2FwCiAgICBpdG9iCiAgICBkaWcgOAogICAgbGVuCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgdW5jb3ZlciA5CiAgICBjb25jYXQKICAgIGRpZyAxCiAgICBwdXNoYnl0ZXMgMHgwMDU2CiAgICBjb25jYXQKICAgIGRpZyAxCiAgICBsZW4KICAgIHB1c2hpbnQgODYKICAgICsKICAgIGRpZyAxMAogICAgbGVuCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgdW5jb3ZlciAxMQogICAgY29uY2F0CiAgICBzd2FwCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgdW5jb3ZlciAyCiAgICBzd2FwCiAgICBjb25jYXQKICAgIHVuY292ZXIgOQogICAgaXRvYgogICAgY29uY2F0CiAgICBwdXNoYnl0ZXMgMHgwMAogICAgaW50Y18yIC8vIDAKICAgIHVuY292ZXIgMTAKICAgIHNldGJpdAogICAgY29uY2F0CiAgICB1bmNvdmVyIDcKICAgIGl0b2IKICAgIGNvbmNhdAogICAgdW5jb3ZlciA2CiAgICBpdG9iCiAgICBjb25jYXQKICAgIHVuY292ZXIgNQogICAgaXRvYgogICAgY29uY2F0CiAgICB1bmNvdmVyIDQKICAgIGNvbmNhdAogICAgLy8gc21hcnRfY29udHJhY3RzL2FnZW50X21hcmtldF9jb250cmFjdHMvY29udHJhY3QuYWxnby50czo0MwogICAgLy8gY29tcGxldGVkSm9iczogMCwKICAgIGludGNfMiAvLyAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWdlbnRfbWFya2V0X2NvbnRyYWN0cy9jb250cmFjdC5hbGdvLnRzOjMzLTQ1CiAgICAvLyBjb25zdCByZWNvcmQ6IFNlcnZpY2VSZWNvcmQgPSB7CiAgICAvLyAgIHNlcnZpY2VJZDogaWQsCiAgICAvLyAgIG5hbWU6IG5hbWUsCiAgICAvLyAgIGNhdGVnb3J5OiBjYXRlZ29yeSwKICAgIC8vICAgcHJpY2VNaWNyb0FsZ29zOiBwcmljZU1pY3JvQWxnb3MsCiAgICAvLyAgIHJlcXVpcmVzSW5wdXQ6IHJlcXVpcmVzSW5wdXQsCiAgICAvLyAgIGJhc2VSYXRlTWljcm9BbGdvczogYmFzZVJhdGVNaWNyb0FsZ29zLAogICAgLy8gICBpbmNyZW1lbnRQZXJCbG9ja01pY3JvQWxnb3M6IGluY3JlbWVudFBlckJsb2NrTWljcm9BbGdvcywKICAgIC8vICAgYmxvY2tTaXplOiBibG9ja1NpemUsCiAgICAvLyAgIHByb3ZpZGVyQWRkcmVzczogVHhuLnNlbmRlciwKICAgIC8vICAgY29tcGxldGVkSm9iczogMCwKICAgIC8vICAgYWN0aXZlOiB0cnVlCiAgICAvLyB9OwogICAgaXRvYgogICAgY29uY2F0CiAgICBwdXNoYnl0ZXMgMHg4MAogICAgY29uY2F0CiAgICB1bmNvdmVyIDIKICAgIGNvbmNhdAogICAgc3dhcAogICAgY29uY2F0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWdlbnRfbWFya2V0X2NvbnRyYWN0cy9jb250cmFjdC5hbGdvLnRzOjE5CiAgICAvLyBzZXJ2aWNlcyA9IEJveE1hcDx1aW50NjQsIFNlcnZpY2VSZWNvcmQ+KHsga2V5UHJlZml4OiAnc2VydmljZXMnIH0pOwogICAgYnl0ZWNfMCAvLyAic2VydmljZXMiCiAgICBkaWcgMgogICAgY29uY2F0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWdlbnRfbWFya2V0X2NvbnRyYWN0cy9jb250cmFjdC5hbGdvLnRzOjQ3CiAgICAvLyB0aGlzLnNlcnZpY2VzKGlkKS52YWx1ZSA9IGNsb25lKHJlY29yZCk7CiAgICBkdXAKICAgIGJveF9kZWwKICAgIHBvcAogICAgc3dhcAogICAgYm94X3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2FnZW50X21hcmtldF9jb250cmFjdHMvY29udHJhY3QuYWxnby50czoyMS0yOQogICAgLy8gcHVibGljIHJlZ2lzdGVyU2VydmljZSgKICAgIC8vICAgbmFtZTogc3RyaW5nLAogICAgLy8gICBjYXRlZ29yeTogc3RyaW5nLAogICAgLy8gICBwcmljZU1pY3JvQWxnb3M6IHVpbnQ2NCwKICAgIC8vICAgcmVxdWlyZXNJbnB1dDogYm9vbGVhbiwKICAgIC8vICAgYmFzZVJhdGVNaWNyb0FsZ29zOiB1aW50NjQsCiAgICAvLyAgIGluY3JlbWVudFBlckJsb2NrTWljcm9BbGdvczogdWludDY0LAogICAgLy8gICBibG9ja1NpemU6IHVpbnQ2NAogICAgLy8gKTogdWludDY0IHsKICAgIHB1c2hieXRlcyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy9hZ2VudF9tYXJrZXRfY29udHJhY3RzL2NvbnRyYWN0LmFsZ28udHM6OkFnZW50TWFya2V0UmVnaXN0cnkudXBkYXRlU2VydmljZVByaWNlW3JvdXRpbmddKCkgLT4gdm9pZDoKdXBkYXRlU2VydmljZVByaWNlOgogICAgLy8gc21hcnRfY29udHJhY3RzL2FnZW50X21hcmtldF9jb250cmFjdHMvY29udHJhY3QuYWxnby50czo1MQogICAgLy8gcHVibGljIHVwZGF0ZVNlcnZpY2VQcmljZShzZXJ2aWNlSWQ6IHVpbnQ2NCwgbmV3UHJpY2VNaWNyb0FsZ29zOiB1aW50NjQpOiB2b2lkIHsKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzEgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIGJ0b2kKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzEgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hZ2VudF9tYXJrZXRfY29udHJhY3RzL2NvbnRyYWN0LmFsZ28udHM6NTIKICAgIC8vIGFzc2VydCh0aGlzLnNlcnZpY2VzKHNlcnZpY2VJZCkuZXhpc3RzLCAnU2VydmljZSBkb2VzIG5vdCBleGlzdCcpOwogICAgc3dhcAogICAgaXRvYgogICAgLy8gc21hcnRfY29udHJhY3RzL2FnZW50X21hcmtldF9jb250cmFjdHMvY29udHJhY3QuYWxnby50czoxOQogICAgLy8gc2VydmljZXMgPSBCb3hNYXA8dWludDY0LCBTZXJ2aWNlUmVjb3JkPih7IGtleVByZWZpeDogJ3NlcnZpY2VzJyB9KTsKICAgIGJ5dGVjXzAgLy8gInNlcnZpY2VzIgogICAgc3dhcAogICAgY29uY2F0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWdlbnRfbWFya2V0X2NvbnRyYWN0cy9jb250cmFjdC5hbGdvLnRzOjUyCiAgICAvLyBhc3NlcnQodGhpcy5zZXJ2aWNlcyhzZXJ2aWNlSWQpLmV4aXN0cywgJ1NlcnZpY2UgZG9lcyBub3QgZXhpc3QnKTsKICAgIGR1cAogICAgYm94X2xlbgogICAgYnVyeSAxCiAgICBhc3NlcnQgLy8gU2VydmljZSBkb2VzIG5vdCBleGlzdAogICAgLy8gc21hcnRfY29udHJhY3RzL2FnZW50X21hcmtldF9jb250cmFjdHMvY29udHJhY3QuYWxnby50czo1NAogICAgLy8gYXNzZXJ0KFR4bi5zZW5kZXIgPT09IHJlY29yZC5wcm92aWRlckFkZHJlc3MsICdPbmx5IHByb3ZpZGVyIGNhbiB1cGRhdGUgcHJpY2UnKTsKICAgIHR4biBTZW5kZXIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hZ2VudF9tYXJrZXRfY29udHJhY3RzL2NvbnRyYWN0LmFsZ28udHM6NTMtNTQKICAgIC8vIGNvbnN0IHJlY29yZCA9IGNsb25lKHRoaXMuc2VydmljZXMoc2VydmljZUlkKS52YWx1ZSk7CiAgICAvLyBhc3NlcnQoVHhuLnNlbmRlciA9PT0gcmVjb3JkLnByb3ZpZGVyQWRkcmVzcywgJ09ubHkgcHJvdmlkZXIgY2FuIHVwZGF0ZSBwcmljZScpOwogICAgZGlnIDEKICAgIHB1c2hpbnRzIDQ1IDMyCiAgICBib3hfZXh0cmFjdCAvLyBvbiBlcnJvcjogaW5kZXggb3V0IG9mIGJvdW5kcwogICAgLy8gc21hcnRfY29udHJhY3RzL2FnZW50X21hcmtldF9jb250cmFjdHMvY29udHJhY3QuYWxnby50czo1NAogICAgLy8gYXNzZXJ0KFR4bi5zZW5kZXIgPT09IHJlY29yZC5wcm92aWRlckFkZHJlc3MsICdPbmx5IHByb3ZpZGVyIGNhbiB1cGRhdGUgcHJpY2UnKTsKICAgID09CiAgICBhc3NlcnQgLy8gT25seSBwcm92aWRlciBjYW4gdXBkYXRlIHByaWNlCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWdlbnRfbWFya2V0X2NvbnRyYWN0cy9jb250cmFjdC5hbGdvLnRzOjU2LTU3CiAgICAvLyByZWNvcmQucHJpY2VNaWNyb0FsZ29zID0gbmV3UHJpY2VNaWNyb0FsZ29zOwogICAgLy8gdGhpcy5zZXJ2aWNlcyhzZXJ2aWNlSWQpLnZhbHVlID0gY2xvbmUocmVjb3JkKTsKICAgIHB1c2hpbnQgMTIKICAgIHVuY292ZXIgMgogICAgYm94X3JlcGxhY2UgLy8gb24gZXJyb3I6IGluZGV4IG91dCBvZiBib3VuZHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hZ2VudF9tYXJrZXRfY29udHJhY3RzL2NvbnRyYWN0LmFsZ28udHM6NTEKICAgIC8vIHB1YmxpYyB1cGRhdGVTZXJ2aWNlUHJpY2Uoc2VydmljZUlkOiB1aW50NjQsIG5ld1ByaWNlTWljcm9BbGdvczogdWludDY0KTogdm9pZCB7CiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzL2FnZW50X21hcmtldF9jb250cmFjdHMvY29udHJhY3QuYWxnby50czo6QWdlbnRNYXJrZXRSZWdpc3RyeS5kZWFjdGl2YXRlU2VydmljZVtyb3V0aW5nXSgpIC0+IHZvaWQ6CmRlYWN0aXZhdGVTZXJ2aWNlOgogICAgLy8gc21hcnRfY29udHJhY3RzL2FnZW50X21hcmtldF9jb250cmFjdHMvY29udHJhY3QuYWxnby50czo2MAogICAgLy8gcHVibGljIGRlYWN0aXZhdGVTZXJ2aWNlKHNlcnZpY2VJZDogdWludDY0KTogdm9pZCB7CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18xIC8vIDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDY0CiAgICBidG9pCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWdlbnRfbWFya2V0X2NvbnRyYWN0cy9jb250cmFjdC5hbGdvLnRzOjYxCiAgICAvLyBhc3NlcnQodGhpcy5zZXJ2aWNlcyhzZXJ2aWNlSWQpLmV4aXN0cywgJ1NlcnZpY2UgZG9lcyBub3QgZXhpc3QnKTsKICAgIGl0b2IKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hZ2VudF9tYXJrZXRfY29udHJhY3RzL2NvbnRyYWN0LmFsZ28udHM6MTkKICAgIC8vIHNlcnZpY2VzID0gQm94TWFwPHVpbnQ2NCwgU2VydmljZVJlY29yZD4oeyBrZXlQcmVmaXg6ICdzZXJ2aWNlcycgfSk7CiAgICBieXRlY18wIC8vICJzZXJ2aWNlcyIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgLy8gc21hcnRfY29udHJhY3RzL2FnZW50X21hcmtldF9jb250cmFjdHMvY29udHJhY3QuYWxnby50czo2MQogICAgLy8gYXNzZXJ0KHRoaXMuc2VydmljZXMoc2VydmljZUlkKS5leGlzdHMsICdTZXJ2aWNlIGRvZXMgbm90IGV4aXN0Jyk7CiAgICBkdXAKICAgIGJveF9sZW4KICAgIGJ1cnkgMQogICAgYXNzZXJ0IC8vIFNlcnZpY2UgZG9lcyBub3QgZXhpc3QKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hZ2VudF9tYXJrZXRfY29udHJhY3RzL2NvbnRyYWN0LmFsZ28udHM6NjMKICAgIC8vIGFzc2VydChUeG4uc2VuZGVyID09PSByZWNvcmQucHJvdmlkZXJBZGRyZXNzLCAnT25seSBwcm92aWRlciBjYW4gZGVhY3RpdmF0ZScpOwogICAgdHhuIFNlbmRlcgogICAgLy8gc21hcnRfY29udHJhY3RzL2FnZW50X21hcmtldF9jb250cmFjdHMvY29udHJhY3QuYWxnby50czo2Mi02MwogICAgLy8gY29uc3QgcmVjb3JkID0gY2xvbmUodGhpcy5zZXJ2aWNlcyhzZXJ2aWNlSWQpLnZhbHVlKTsKICAgIC8vIGFzc2VydChUeG4uc2VuZGVyID09PSByZWNvcmQucHJvdmlkZXJBZGRyZXNzLCAnT25seSBwcm92aWRlciBjYW4gZGVhY3RpdmF0ZScpOwogICAgZGlnIDEKICAgIHB1c2hpbnRzIDQ1IDMyCiAgICBib3hfZXh0cmFjdCAvLyBvbiBlcnJvcjogaW5kZXggb3V0IG9mIGJvdW5kcwogICAgLy8gc21hcnRfY29udHJhY3RzL2FnZW50X21hcmtldF9jb250cmFjdHMvY29udHJhY3QuYWxnby50czo2MwogICAgLy8gYXNzZXJ0KFR4bi5zZW5kZXIgPT09IHJlY29yZC5wcm92aWRlckFkZHJlc3MsICdPbmx5IHByb3ZpZGVyIGNhbiBkZWFjdGl2YXRlJyk7CiAgICA9PQogICAgYXNzZXJ0IC8vIE9ubHkgcHJvdmlkZXIgY2FuIGRlYWN0aXZhdGUKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hZ2VudF9tYXJrZXRfY29udHJhY3RzL2NvbnRyYWN0LmFsZ28udHM6NjUtNjYKICAgIC8vIHJlY29yZC5hY3RpdmUgPSBmYWxzZTsKICAgIC8vIHRoaXMuc2VydmljZXMoc2VydmljZUlkKS52YWx1ZSA9IGNsb25lKHJlY29yZCk7CiAgICBkdXAKICAgIHB1c2hpbnQgODUKICAgIGludGNfMCAvLyAxCiAgICBib3hfZXh0cmFjdAogICAgaW50Y18yIC8vIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hZ2VudF9tYXJrZXRfY29udHJhY3RzL2NvbnRyYWN0LmFsZ28udHM6NjUKICAgIC8vIHJlY29yZC5hY3RpdmUgPSBmYWxzZTsKICAgIGR1cAogICAgLy8gc21hcnRfY29udHJhY3RzL2FnZW50X21hcmtldF9jb250cmFjdHMvY29udHJhY3QuYWxnby50czo2NS02NgogICAgLy8gcmVjb3JkLmFjdGl2ZSA9IGZhbHNlOwogICAgLy8gdGhpcy5zZXJ2aWNlcyhzZXJ2aWNlSWQpLnZhbHVlID0gY2xvbmUocmVjb3JkKTsKICAgIHNldGJpdAogICAgcHVzaGludCA4NQogICAgc3dhcAogICAgYm94X3JlcGxhY2UgLy8gb24gZXJyb3I6IGluZGV4IG91dCBvZiBib3VuZHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hZ2VudF9tYXJrZXRfY29udHJhY3RzL2NvbnRyYWN0LmFsZ28udHM6NjAKICAgIC8vIHB1YmxpYyBkZWFjdGl2YXRlU2VydmljZShzZXJ2aWNlSWQ6IHVpbnQ2NCk6IHZvaWQgewogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy9hZ2VudF9tYXJrZXRfY29udHJhY3RzL2NvbnRyYWN0LmFsZ28udHM6OkFnZW50TWFya2V0UmVnaXN0cnkucmVjb3JkQ29tcGxldGlvbltyb3V0aW5nXSgpIC0+IHZvaWQ6CnJlY29yZENvbXBsZXRpb246CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWdlbnRfbWFya2V0X2NvbnRyYWN0cy9jb250cmFjdC5hbGdvLnRzOjY5CiAgICAvLyBwdWJsaWMgcmVjb3JkQ29tcGxldGlvbihzZXJ2aWNlSWQ6IHVpbnQ2NCk6IHZvaWQgewogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwCiAgICBsZW4KICAgIGludGNfMSAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgLy8gc21hcnRfY29udHJhY3RzL2FnZW50X21hcmtldF9jb250cmFjdHMvY29udHJhY3QuYWxnby50czo3MAogICAgLy8gYXNzZXJ0KFR4bi5zZW5kZXIgPT09IEdsb2JhbC5jcmVhdG9yQWRkcmVzcywgJ09ubHkgYWRtaW4gY2FuIHJlY29yZCBjb21wbGV0aW9uJyk7CiAgICB0eG4gU2VuZGVyCiAgICBnbG9iYWwgQ3JlYXRvckFkZHJlc3MKICAgID09CiAgICBhc3NlcnQgLy8gT25seSBhZG1pbiBjYW4gcmVjb3JkIGNvbXBsZXRpb24KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hZ2VudF9tYXJrZXRfY29udHJhY3RzL2NvbnRyYWN0LmFsZ28udHM6NzEKICAgIC8vIGFzc2VydCh0aGlzLnNlcnZpY2VzKHNlcnZpY2VJZCkuZXhpc3RzLCAnU2VydmljZSBkb2VzIG5vdCBleGlzdCcpOwogICAgaXRvYgogICAgLy8gc21hcnRfY29udHJhY3RzL2FnZW50X21hcmtldF9jb250cmFjdHMvY29udHJhY3QuYWxnby50czoxOQogICAgLy8gc2VydmljZXMgPSBCb3hNYXA8dWludDY0LCBTZXJ2aWNlUmVjb3JkPih7IGtleVByZWZpeDogJ3NlcnZpY2VzJyB9KTsKICAgIGJ5dGVjXzAgLy8gInNlcnZpY2VzIgogICAgc3dhcAogICAgY29uY2F0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWdlbnRfbWFya2V0X2NvbnRyYWN0cy9jb250cmFjdC5hbGdvLnRzOjcxCiAgICAvLyBhc3NlcnQodGhpcy5zZXJ2aWNlcyhzZXJ2aWNlSWQpLmV4aXN0cywgJ1NlcnZpY2UgZG9lcyBub3QgZXhpc3QnKTsKICAgIGR1cAogICAgYm94X2xlbgogICAgYnVyeSAxCiAgICBhc3NlcnQgLy8gU2VydmljZSBkb2VzIG5vdCBleGlzdAogICAgLy8gc21hcnRfY29udHJhY3RzL2FnZW50X21hcmtldF9jb250cmFjdHMvY29udHJhY3QuYWxnby50czo3My03NAogICAgLy8gY29uc3QgcmVjb3JkID0gY2xvbmUodGhpcy5zZXJ2aWNlcyhzZXJ2aWNlSWQpLnZhbHVlKTsKICAgIC8vIHJlY29yZC5jb21wbGV0ZWRKb2JzID0gcmVjb3JkLmNvbXBsZXRlZEpvYnMgKyAxOwogICAgZHVwCiAgICBwdXNoaW50IDc3CiAgICBpbnRjXzEgLy8gOAogICAgYm94X2V4dHJhY3QgLy8gb24gZXJyb3I6IGluZGV4IG91dCBvZiBib3VuZHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hZ2VudF9tYXJrZXRfY29udHJhY3RzL2NvbnRyYWN0LmFsZ28udHM6NzQKICAgIC8vIHJlY29yZC5jb21wbGV0ZWRKb2JzID0gcmVjb3JkLmNvbXBsZXRlZEpvYnMgKyAxOwogICAgYnRvaQogICAgaW50Y18wIC8vIDEKICAgICsKICAgIGl0b2IKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hZ2VudF9tYXJrZXRfY29udHJhY3RzL2NvbnRyYWN0LmFsZ28udHM6NzQtNzUKICAgIC8vIHJlY29yZC5jb21wbGV0ZWRKb2JzID0gcmVjb3JkLmNvbXBsZXRlZEpvYnMgKyAxOwogICAgLy8gdGhpcy5zZXJ2aWNlcyhzZXJ2aWNlSWQpLnZhbHVlID0gY2xvbmUocmVjb3JkKTsKICAgIHB1c2hpbnQgNzcKICAgIHN3YXAKICAgIGJveF9yZXBsYWNlIC8vIG9uIGVycm9yOiBpbmRleCBvdXQgb2YgYm91bmRzCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWdlbnRfbWFya2V0X2NvbnRyYWN0cy9jb250cmFjdC5hbGdvLnRzOjY5CiAgICAvLyBwdWJsaWMgcmVjb3JkQ29tcGxldGlvbihzZXJ2aWNlSWQ6IHVpbnQ2NCk6IHZvaWQgewogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgo=", "clear": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYmFzZS1jb250cmFjdC5kLnRzOjpCYXNlQ29udHJhY3QuY2xlYXJTdGF0ZVByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBwdXNoaW50IDEKICAgIHJldHVybgo=" }, "byteCode": { "approval": "CyAEAQgAAiYCCHNlcnZpY2VzDW5leHRTZXJ2aWNlSWQxGEAAAykiZzEbQQArMRkURDEYRIIEBL9jDUwEMgqiAwSfLZ6UBGMsUq02GgCOBAAJAMoA9wEiADEZFDEYFBBDNhoBSSRZJQhLARUSRFcCADYaAkkkWSUISwEVEkRXAgA2GgNJFSMSRBc2GgRJFSISRCRTNhoFSRUjEkQXNhoGSRUjEkQXNhoHSRUjEkQXJCllREkiCClMZzEATBZLCBUWVwYCTwlQSwGAAgBWUEsBFYFWCEsKFRZXBgJPC1BMFlcGAk8CTFBPCRZQgAEAJE8KVFBPBxZQTwYWUE8FFlBPBFAkFlCAAYBQTwJQTFAoSwJQSbxITL+ABBUffHVMULAiQzYaAUkVIxJEFzYaAkkVIxJETBYoTFBJvUUBRDEASwGDAi0guhJEgQxPArsiQzYaAUkVIxJEFxYoTFBJvUUBRDEASwGDAi0guhJESYFVIrokSVSBVUy7IkM2GgFJFSMSRBcxADIJEkQWKExQSb1FAURJgU0juhciCBaBTUy7IkM=", "clear": "C4EBQw==" }, "compilerInfo": { "compiler": "puya", "compilerVersion": { "major": 5, "minor": 9, "patch": 0 } }, "events": [], "templateVariables": {} }