From d7a7fceea4e35e1e5a17420d4b18cf7e9019272e Mon Sep 17 00:00:00 2001 From: sodium16 Date: Fri, 10 Apr 2026 22:22:44 +0530 Subject: [PATCH] second proto temp2 --- projects/hackalgo-frontend/src/contracts/Algomint.ts | 2 +- projects/hackalgo-frontend/src/hooks/useAlgoMint.ts | 4 ---- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/projects/hackalgo-frontend/src/contracts/Algomint.ts b/projects/hackalgo-frontend/src/contracts/Algomint.ts index 176c27f..f73c9c8 100644 --- a/projects/hackalgo-frontend/src/contracts/Algomint.ts +++ b/projects/hackalgo-frontend/src/contracts/Algomint.ts @@ -24,7 +24,7 @@ import { SendParams, SendSingleTransactionResult, SendAtomicTransactionComposerR import { Address, encodeAddress, modelsv2, OnApplicationComplete, Transaction, TransactionSigner } from 'algosdk' import SimulateResponse = modelsv2.SimulateResponse -export const APP_SPEC: Arc56Contract = {"name":"Algomint","structs":{},"methods":[{"name":"mint_future_nft","args":[{"type":"uint64","name":"total_nfts"},{"type":"uint64","name":"total_pct_bps"},{"type":"uint64","name":"duration_years"},{"type":"uint64","name":"start_quarter"},{"type":"uint64","name":"sale_price"},{"type":"pay","name":"mbr_payment"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]},"readonly":false,"events":[],"recommendations":{}},{"name":"buy_nft","args":[{"type":"uint64","name":"asset_id"},{"type":"axfer","name":"opt_in"},{"type":"pay","name":"payment"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]},"readonly":false,"events":[],"recommendations":{}},{"name":"report_income","args":[{"type":"uint64","name":"quarter"},{"type":"uint64","name":"income_amount"},{"type":"pay","name":"payout_funding"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]},"readonly":false,"events":[],"recommendations":{}},{"name":"claim_payout","args":[{"type":"uint64","name":"asset_id"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]},"readonly":false,"events":[],"recommendations":{}},{"name":"get_pending_payout","args":[{"type":"uint64","name":"asset_id"},{"type":"address","name":"address"}],"returns":{"type":"uint64"},"actions":{"create":[],"call":["NoOp"]},"readonly":true,"events":[],"recommendations":{}},{"name":"get_terms","args":[],"returns":{"type":"(address,uint64,uint64,uint64,uint64,uint64,uint64)"},"actions":{"create":[],"call":["NoOp"]},"readonly":true,"desc":"Returns: (creator, total_nfts, total_pct_bps, duration_years, start_quarter, sale_price, first_asset_id)","events":[],"recommendations":{}}],"arcs":[22,28],"networks":{},"state":{"schema":{"global":{"ints":11,"bytes":1},"local":{"ints":0,"bytes":0}},"keys":{"global":{"creator":{"keyType":"AVMString","valueType":"address","key":"Y3JlYXRvcg=="},"total_nfts":{"keyType":"AVMString","valueType":"AVMUint64","key":"dG90YWxfbmZ0cw=="},"total_pct_bps":{"keyType":"AVMString","valueType":"AVMUint64","key":"dG90YWxfcGN0X2Jwcw=="},"duration_years":{"keyType":"AVMString","valueType":"AVMUint64","key":"ZHVyYXRpb25feWVhcnM="},"start_quarter":{"keyType":"AVMString","valueType":"AVMUint64","key":"c3RhcnRfcXVhcnRlcg=="},"sale_price":{"keyType":"AVMString","valueType":"AVMUint64","key":"c2FsZV9wcmljZQ=="},"first_asset_id":{"keyType":"AVMString","valueType":"AVMUint64","key":"Zmlyc3RfYXNzZXRfaWQ="},"pct_per_nft_bps":{"keyType":"AVMString","valueType":"AVMUint64","key":"cGN0X3Blcl9uZnRfYnBz"},"last_reported_quarter":{"keyType":"AVMString","valueType":"AVMUint64","key":"bGFzdF9yZXBvcnRlZF9xdWFydGVy"},"last_reported_income":{"keyType":"AVMString","valueType":"AVMUint64","key":"bGFzdF9yZXBvcnRlZF9pbmNvbWU="},"payout_per_nft":{"keyType":"AVMString","valueType":"AVMUint64","key":"cGF5b3V0X3Blcl9uZnQ="},"initialized":{"keyType":"AVMString","valueType":"AVMUint64","key":"aW5pdGlhbGl6ZWQ="}},"local":{},"box":{}},"maps":{"global":{},"local":{},"box":{"last_claimed_quarter":{"keyType":"uint64","valueType":"uint64","prefix":"bGNf"},"minted_assets":{"keyType":"uint64","valueType":"uint64","prefix":"bWFf"}}}},"bareActions":{"create":["NoOp"],"call":[]},"sourceInfo":{"approval":{"sourceInfo":[{"pc":[755,808,1154],"errorMessage":"check self.creator exists"},{"pc":[1167],"errorMessage":"check self.duration_years exists"},{"pc":[1182],"errorMessage":"check self.first_asset_id exists"},{"pc":[373,644,800,888,997,1106],"errorMessage":"check self.initialized exists"},{"pc":[814,913,1029,1085],"errorMessage":"check self.last_reported_quarter exists"},{"pc":[948,1094],"errorMessage":"check self.payout_per_nft exists"},{"pc":[716,1177],"errorMessage":"check self.sale_price exists"},{"pc":[1172],"errorMessage":"check self.start_quarter exists"},{"pc":[452,868,1158],"errorMessage":"check self.total_nfts exists"},{"pc":[448,825,1162],"errorMessage":"check self.total_pct_bps exists"},{"pc":[993],"errorMessage":"invalid number of bytes for arc4.static_array"},{"pc":[321,331,340,349,358,617,776,785,883,979],"errorMessage":"invalid number of bytes for arc4.uint64"},{"pc":[630],"errorMessage":"transaction type is axfer"},{"pc":[369,640,796],"errorMessage":"transaction type is pay"}],"pcOffsetMethod":"none"},"clear":{"sourceInfo":[],"pcOffsetMethod":"none"}},"source":{"approval":"I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuYXBwcm92YWxfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIGludGNibG9jayAwIDEgOCAxMDAwMAogICAgYnl0ZWNibG9jayAiaW5pdGlhbGl6ZWQiICJsYXN0X3JlcG9ydGVkX3F1YXJ0ZXIiICJ0b3RhbF9uZnRzIiAidG90YWxfcGN0X2JwcyIgInNhbGVfcHJpY2UiICJwYXlvdXRfcGVyX25mdCIgImNyZWF0b3IiICJtYV8iICJkdXJhdGlvbl95ZWFycyIgInN0YXJ0X3F1YXJ0ZXIiICJmaXJzdF9hc3NldF9pZCIgInBjdF9wZXJfbmZ0X2JwcyIgImxhc3RfcmVwb3J0ZWRfaW5jb21lIiAibGNfIiAweDE1MWY3Yzc1CiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYm56IG1haW5fYWZ0ZXJfaWZfZWxzZUAyCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6OAogICAgLy8gc2VsZi50b3RhbF9uZnRzID0gR2xvYmFsU3RhdGUoVUludDY0KDApKQogICAgYnl0ZWNfMiAvLyAidG90YWxfbmZ0cyIKICAgIGludGNfMCAvLyAwCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjkKICAgIC8vIHNlbGYudG90YWxfcGN0X2JwcyA9IEdsb2JhbFN0YXRlKFVJbnQ2NCgwKSkKICAgIGJ5dGVjXzMgLy8gInRvdGFsX3BjdF9icHMiCiAgICBpbnRjXzAgLy8gMAogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weToxMAogICAgLy8gc2VsZi5kdXJhdGlvbl95ZWFycyA9IEdsb2JhbFN0YXRlKFVJbnQ2NCgwKSkKICAgIGJ5dGVjIDggLy8gImR1cmF0aW9uX3llYXJzIgogICAgaW50Y18wIC8vIDAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTEKICAgIC8vIHNlbGYuc3RhcnRfcXVhcnRlciA9IEdsb2JhbFN0YXRlKFVJbnQ2NCgwKSkKICAgIGJ5dGVjIDkgLy8gInN0YXJ0X3F1YXJ0ZXIiCiAgICBpbnRjXzAgLy8gMAogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weToxMgogICAgLy8gc2VsZi5zYWxlX3ByaWNlID0gR2xvYmFsU3RhdGUoVUludDY0KDApKQogICAgYnl0ZWMgNCAvLyAic2FsZV9wcmljZSIKICAgIGludGNfMCAvLyAwCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjEzCiAgICAvLyBzZWxmLmZpcnN0X2Fzc2V0X2lkID0gR2xvYmFsU3RhdGUoVUludDY0KDApKQogICAgYnl0ZWMgMTAgLy8gImZpcnN0X2Fzc2V0X2lkIgogICAgaW50Y18wIC8vIDAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTQKICAgIC8vIHNlbGYucGN0X3Blcl9uZnRfYnBzID0gR2xvYmFsU3RhdGUoVUludDY0KDApKQogICAgYnl0ZWMgMTEgLy8gInBjdF9wZXJfbmZ0X2JwcyIKICAgIGludGNfMCAvLyAwCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjE1CiAgICAvLyBzZWxmLmxhc3RfcmVwb3J0ZWRfcXVhcnRlciA9IEdsb2JhbFN0YXRlKFVJbnQ2NCgwKSkKICAgIGJ5dGVjXzEgLy8gImxhc3RfcmVwb3J0ZWRfcXVhcnRlciIKICAgIGludGNfMCAvLyAwCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjE2CiAgICAvLyBzZWxmLmxhc3RfcmVwb3J0ZWRfaW5jb21lID0gR2xvYmFsU3RhdGUoVUludDY0KDApKQogICAgYnl0ZWMgMTIgLy8gImxhc3RfcmVwb3J0ZWRfaW5jb21lIgogICAgaW50Y18wIC8vIDAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTcKICAgIC8vIHNlbGYucGF5b3V0X3Blcl9uZnQgPSBHbG9iYWxTdGF0ZShVSW50NjQoMCkpCiAgICBieXRlYyA1IC8vICJwYXlvdXRfcGVyX25mdCIKICAgIGludGNfMCAvLyAwCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjE4CiAgICAvLyBzZWxmLmluaXRpYWxpemVkID0gR2xvYmFsU3RhdGUoRmFsc2UpCiAgICBieXRlY18wIC8vICJpbml0aWFsaXplZCIKICAgIGludGNfMCAvLyAwCiAgICBhcHBfZ2xvYmFsX3B1dAoKbWFpbl9hZnRlcl9pZl9lbHNlQDI6CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6NAogICAgLy8gY2xhc3MgQWxnb21pbnQoQVJDNENvbnRyYWN0KToKICAgIHR4biBOdW1BcHBBcmdzCiAgICBieiBtYWluX19fYWxnb3B5X2RlZmF1bHRfY3JlYXRlQDE1CiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQKICAgIHB1c2hieXRlc3MgMHhhYzZlMWEwNCAweGRkOTgwZTZkIDB4YmQ4ZGM5N2UgMHg5NDVmMTc3NyAweDU3Mzc3MTc4IDB4YmVmYzE2YzUgLy8gbWV0aG9kICJtaW50X2Z1dHVyZV9uZnQodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCxwYXkpdm9pZCIsIG1ldGhvZCAiYnV5X25mdCh1aW50NjQsYXhmZXIscGF5KXZvaWQiLCBtZXRob2QgInJlcG9ydF9pbmNvbWUodWludDY0LHVpbnQ2NCxwYXkpdm9pZCIsIG1ldGhvZCAiY2xhaW1fcGF5b3V0KHVpbnQ2NCl2b2lkIiwgbWV0aG9kICJnZXRfcGVuZGluZ19wYXlvdXQodWludDY0LGFkZHJlc3MpdWludDY0IiwgbWV0aG9kICJnZXRfdGVybXMoKShhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KSIKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDAKICAgIG1hdGNoIG1pbnRfZnV0dXJlX25mdCBidXlfbmZ0IHJlcG9ydF9pbmNvbWUgY2xhaW1fcGF5b3V0IGdldF9wZW5kaW5nX3BheW91dCBnZXRfdGVybXMKICAgIGVycgoKbWFpbl9fX2FsZ29weV9kZWZhdWx0X2NyZWF0ZUAxNToKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICAhCiAgICAmJgogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLmFsZ29taW50LmNvbnRyYWN0LkFsZ29taW50Lm1pbnRfZnV0dXJlX25mdFtyb3V0aW5nXSgpIC0+IHZvaWQ6Cm1pbnRfZnV0dXJlX25mdDoKICAgIHB1c2hieXRlcyAiIgogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjI1CiAgICAvLyBAYXJjNC5hYmltZXRob2QKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzIgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIGJ0b2kKICAgIGR1cAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgZHVwCiAgICBsZW4KICAgIGludGNfMiAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwogICAgZHVwCiAgICBsZW4KICAgIGludGNfMiAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAogICAgZHVwCiAgICBsZW4KICAgIGludGNfMiAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQogICAgZHVwCiAgICBsZW4KICAgIGludGNfMiAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgdHhuIEdyb3VwSW5kZXgKICAgIGludGNfMSAvLyAxCiAgICAtCiAgICBkdXAKICAgIGd0eG5zIFR5cGVFbnVtCiAgICBpbnRjXzEgLy8gcGF5CiAgICA9PQogICAgYXNzZXJ0IC8vIHRyYW5zYWN0aW9uIHR5cGUgaXMgcGF5CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MzUKICAgIC8vIGFzc2VydCBub3Qgc2VsZi5pbml0aWFsaXplZC52YWx1ZQogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjXzAgLy8gImluaXRpYWxpemVkIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmluaXRpYWxpemVkIGV4aXN0cwogICAgIQogICAgYXNzZXJ0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MzYKICAgIC8vIGFzc2VydCB0b3RhbF9uZnRzID4gVUludDY0KDApCiAgICBkaWcgNQogICAgYXNzZXJ0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MzcKICAgIC8vIGFzc2VydCB0b3RhbF9wY3RfYnBzID4gVUludDY0KDApCiAgICBkaWcgNAogICAgYXNzZXJ0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MzgKICAgIC8vIGFzc2VydCB0b3RhbF9wY3RfYnBzIDw9IFVJbnQ2NCgxMF8wMDApCiAgICBkaWcgNAogICAgaW50Y18zIC8vIDEwMDAwCiAgICA8PQogICAgYXNzZXJ0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MzkKICAgIC8vIGFzc2VydCBkdXJhdGlvbl95ZWFycyA+IFVJbnQ2NCgwKQogICAgZGlnIDMKICAgIGFzc2VydAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjQwCiAgICAvLyBhc3NlcnQgc3RhcnRfcXVhcnRlciA+IFVJbnQ2NCgwKQogICAgZGlnIDIKICAgIGFzc2VydAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjQxCiAgICAvLyBhc3NlcnQgc2FsZV9wcmljZSA+IFVJbnQ2NCgwKQogICAgZGlnIDEKICAgIGFzc2VydAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjQzCiAgICAvLyBhc3NlcnQgbWJyX3BheW1lbnQuc2VuZGVyID09IFR4bi5zZW5kZXIKICAgIGR1cAogICAgZ3R4bnMgU2VuZGVyCiAgICB0eG4gU2VuZGVyCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6NDQKICAgIC8vIGFzc2VydCBtYnJfcGF5bWVudC5yZWNlaXZlciA9PSBHbG9iYWwuY3VycmVudF9hcHBsaWNhdGlvbl9hZGRyZXNzCiAgICBkdXAKICAgIGd0eG5zIFJlY2VpdmVyCiAgICBnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwogICAgPT0KICAgIGFzc2VydAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjQ1LTQ2CiAgICAvLyAjIE5PVEU6IEV4YWN0IE1CUiBkZXBlbmRzIG9uIHByb3RvY29sIHBhcmFtczsgcmVxdWlyZSBhIHNlbnNpYmxlIG1pbmltdW0gZm9yIGRlbW8uCiAgICAvLyBhc3NlcnQgbWJyX3BheW1lbnQuYW1vdW50ID49IFVJbnQ2NCgxXzAwMF8wMDApCiAgICBndHhucyBBbW91bnQKICAgIHB1c2hpbnQgMTAwMDAwMAogICAgPj0KICAgIGFzc2VydAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjQ4CiAgICAvLyBzZWxmLmNyZWF0b3IudmFsdWUgPSBUeG4uc2VuZGVyCiAgICBieXRlYyA2IC8vICJjcmVhdG9yIgogICAgdHhuIFNlbmRlcgogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weTo0OQogICAgLy8gc2VsZi50b3RhbF9uZnRzLnZhbHVlID0gdG90YWxfbmZ0cwogICAgYnl0ZWNfMiAvLyAidG90YWxfbmZ0cyIKICAgIHVuY292ZXIgNQogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weTo1MAogICAgLy8gc2VsZi50b3RhbF9wY3RfYnBzLnZhbHVlID0gdG90YWxfcGN0X2JwcwogICAgYnl0ZWNfMyAvLyAidG90YWxfcGN0X2JwcyIKICAgIHVuY292ZXIgNAogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weTo1MQogICAgLy8gc2VsZi5kdXJhdGlvbl95ZWFycy52YWx1ZSA9IGR1cmF0aW9uX3llYXJzCiAgICBieXRlYyA4IC8vICJkdXJhdGlvbl95ZWFycyIKICAgIHVuY292ZXIgMwogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weTo1MgogICAgLy8gc2VsZi5zdGFydF9xdWFydGVyLnZhbHVlID0gc3RhcnRfcXVhcnRlcgogICAgYnl0ZWMgOSAvLyAic3RhcnRfcXVhcnRlciIKICAgIHVuY292ZXIgMgogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weTo1MwogICAgLy8gc2VsZi5zYWxlX3ByaWNlLnZhbHVlID0gc2FsZV9wcmljZQogICAgYnl0ZWMgNCAvLyAic2FsZV9wcmljZSIKICAgIHN3YXAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6NTQKICAgIC8vIHNlbGYucGN0X3Blcl9uZnRfYnBzLnZhbHVlID0gc2VsZi50b3RhbF9wY3RfYnBzLnZhbHVlIC8vIHNlbGYudG90YWxfbmZ0cy52YWx1ZQogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjXzMgLy8gInRvdGFsX3BjdF9icHMiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYudG90YWxfcGN0X2JwcyBleGlzdHMKICAgIGludGNfMCAvLyAwCiAgICBieXRlY18yIC8vICJ0b3RhbF9uZnRzIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLnRvdGFsX25mdHMgZXhpc3RzCiAgICAvCiAgICBieXRlYyAxMSAvLyAicGN0X3Blcl9uZnRfYnBzIgogICAgc3dhcAogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weTo1NQogICAgLy8gc2VsZi5pbml0aWFsaXplZC52YWx1ZSA9IFRydWUKICAgIGJ5dGVjXzAgLy8gImluaXRpYWxpemVkIgogICAgaW50Y18xIC8vIDEKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6NTctNTgKICAgIC8vICMgTWludCBhIGZpeGVkIHNlcmllcyBvZiBBUkMtMTkgc3R5bGUgTkZUcyBmcm9tIHRoZSBhcHAgYWNjb3VudC4KICAgIC8vIGZvciBpZHggaW4gdXJhbmdlKHRvdGFsX25mdHMpOgogICAgaW50Y18wIC8vIDAKCm1pbnRfZnV0dXJlX25mdF9mb3JfaGVhZGVyQDI6CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6NTctNTgKICAgIC8vICMgTWludCBhIGZpeGVkIHNlcmllcyBvZiBBUkMtMTkgc3R5bGUgTkZUcyBmcm9tIHRoZSBhcHAgYWNjb3VudC4KICAgIC8vIGZvciBpZHggaW4gdXJhbmdlKHRvdGFsX25mdHMpOgogICAgZHVwCiAgICBkaWcgMgogICAgPAogICAgYnogbWludF9mdXR1cmVfbmZ0X2FmdGVyX2ZvckA4CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6NTktNzAKICAgIC8vIGNyZWF0ZWQgPSBpdHhuLkFzc2V0Q29uZmlnKAogICAgLy8gICAgIHRvdGFsPTEsCiAgICAvLyAgICAgZGVjaW1hbHM9MCwKICAgIC8vICAgICBkZWZhdWx0X2Zyb3plbj1GYWxzZSwKICAgIC8vICAgICBhc3NldF9uYW1lPWIiRnV0dXJlIEVhcm5pbmcgTkZUIiwKICAgIC8vICAgICB1bml0X25hbWU9YiJGRU5GVCIsCiAgICAvLyAgICAgIyBBUkMtMTkgdGVtcGxhdGUgVVJMIChDSUQgc291cmNlZCBmcm9tIHJlc2VydmUgYWNjb3VudCBieSBjbGllbnRzKS4KICAgIC8vICAgICB1cmw9YiJ0ZW1wbGF0ZS1pcGZzOi8ve2lwZnNjaWQ6MTpyYXc6cmVzZXJ2ZTpzaGEyLTI1Nn0iLAogICAgLy8gICAgIG1hbmFnZXI9R2xvYmFsLmN1cnJlbnRfYXBwbGljYXRpb25fYWRkcmVzcywKICAgIC8vICAgICByZXNlcnZlPUdsb2JhbC5jdXJyZW50X2FwcGxpY2F0aW9uX2FkZHJlc3MsCiAgICAvLyAgICAgZmVlPTAsCiAgICAvLyApLnN1Ym1pdCgpCiAgICBpdHhuX2JlZ2luCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6NjcKICAgIC8vIG1hbmFnZXI9R2xvYmFsLmN1cnJlbnRfYXBwbGljYXRpb25fYWRkcmVzcywKICAgIGdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6NjgKICAgIC8vIHJlc2VydmU9R2xvYmFsLmN1cnJlbnRfYXBwbGljYXRpb25fYWRkcmVzcywKICAgIGR1cAogICAgaXR4bl9maWVsZCBDb25maWdBc3NldFJlc2VydmUKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXRNYW5hZ2VyCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6NjUtNjYKICAgIC8vICMgQVJDLTE5IHRlbXBsYXRlIFVSTCAoQ0lEIHNvdXJjZWQgZnJvbSByZXNlcnZlIGFjY291bnQgYnkgY2xpZW50cykuCiAgICAvLyB1cmw9YiJ0ZW1wbGF0ZS1pcGZzOi8ve2lwZnNjaWQ6MTpyYXc6cmVzZXJ2ZTpzaGEyLTI1Nn0iLAogICAgcHVzaGJ5dGVzIDB4NzQ2NTZkNzA2YzYxNzQ2NTJkNjk3MDY2NzMzYTJmMmY3YjY5NzA2NjczNjM2OTY0M2EzMTNhNzI2MTc3M2E3MjY1NzM2NTcyNzY2NTNhNzM2ODYxMzIyZDMyMzUzNjdkCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0VVJMCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6NjQKICAgIC8vIHVuaXRfbmFtZT1iIkZFTkZUIiwKICAgIHB1c2hieXRlcyAweDQ2NDU0ZTQ2NTQKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXRVbml0TmFtZQogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjYzCiAgICAvLyBhc3NldF9uYW1lPWIiRnV0dXJlIEVhcm5pbmcgTkZUIiwKICAgIHB1c2hieXRlcyAweDQ2NzU3NDc1NzI2NTIwNDU2MTcyNmU2OTZlNjcyMDRlNDY1NAogICAgaXR4bl9maWVsZCBDb25maWdBc3NldE5hbWUKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weTo2MgogICAgLy8gZGVmYXVsdF9mcm96ZW49RmFsc2UsCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBDb25maWdBc3NldERlZmF1bHRGcm96ZW4KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weTo2MQogICAgLy8gZGVjaW1hbHM9MCwKICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0RGVjaW1hbHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weTo2MAogICAgLy8gdG90YWw9MSwKICAgIGludGNfMSAvLyAxCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0VG90YWwKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weTo1OQogICAgLy8gY3JlYXRlZCA9IGl0eG4uQXNzZXRDb25maWcoCiAgICBwdXNoaW50IDMgLy8gYWNmZwogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjY5CiAgICAvLyBmZWU9MCwKICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjU5LTcwCiAgICAvLyBjcmVhdGVkID0gaXR4bi5Bc3NldENvbmZpZygKICAgIC8vICAgICB0b3RhbD0xLAogICAgLy8gICAgIGRlY2ltYWxzPTAsCiAgICAvLyAgICAgZGVmYXVsdF9mcm96ZW49RmFsc2UsCiAgICAvLyAgICAgYXNzZXRfbmFtZT1iIkZ1dHVyZSBFYXJuaW5nIE5GVCIsCiAgICAvLyAgICAgdW5pdF9uYW1lPWIiRkVORlQiLAogICAgLy8gICAgICMgQVJDLTE5IHRlbXBsYXRlIFVSTCAoQ0lEIHNvdXJjZWQgZnJvbSByZXNlcnZlIGFjY291bnQgYnkgY2xpZW50cykuCiAgICAvLyAgICAgdXJsPWIidGVtcGxhdGUtaXBmczovL3tpcGZzY2lkOjE6cmF3OnJlc2VydmU6c2hhMi0yNTZ9IiwKICAgIC8vICAgICBtYW5hZ2VyPUdsb2JhbC5jdXJyZW50X2FwcGxpY2F0aW9uX2FkZHJlc3MsCiAgICAvLyAgICAgcmVzZXJ2ZT1HbG9iYWwuY3VycmVudF9hcHBsaWNhdGlvbl9hZGRyZXNzLAogICAgLy8gICAgIGZlZT0wLAogICAgLy8gKS5zdWJtaXQoKQogICAgaXR4bl9zdWJtaXQKICAgIGl0eG4gQ3JlYXRlZEFzc2V0SUQKICAgIGJ1cnkgMwogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjcxCiAgICAvLyBpZiBpZHggPT0gVUludDY0KDApOgogICAgZHVwCiAgICBibnogbWludF9mdXR1cmVfbmZ0X2FmdGVyX2lmX2Vsc2VANgogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjcyCiAgICAvLyBzZWxmLmZpcnN0X2Fzc2V0X2lkLnZhbHVlID0gY3JlYXRlZC5jcmVhdGVkX2Fzc2V0LmlkCiAgICBieXRlYyAxMCAvLyAiZmlyc3RfYXNzZXRfaWQiCiAgICBkaWcgMwogICAgYXBwX2dsb2JhbF9wdXQKCm1pbnRfZnV0dXJlX25mdF9hZnRlcl9pZl9lbHNlQDY6CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6NzMKICAgIC8vIHNlbGYubWludGVkX2Fzc2V0c1tjcmVhdGVkLmNyZWF0ZWRfYXNzZXQuaWRdID0gVUludDY0KDEpCiAgICBkaWcgMgogICAgaXRvYgogICAgYnl0ZWMgNyAvLyAibWFfIgogICAgc3dhcAogICAgY29uY2F0CiAgICBpbnRjXzEgLy8gMQogICAgaXRvYgogICAgYm94X3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjU3LTU4CiAgICAvLyAjIE1pbnQgYSBmaXhlZCBzZXJpZXMgb2YgQVJDLTE5IHN0eWxlIE5GVHMgZnJvbSB0aGUgYXBwIGFjY291bnQuCiAgICAvLyBmb3IgaWR4IGluIHVyYW5nZSh0b3RhbF9uZnRzKToKICAgIGR1cAogICAgaW50Y18xIC8vIDEKICAgICsKICAgIGJ1cnkgMQogICAgYiBtaW50X2Z1dHVyZV9uZnRfZm9yX2hlYWRlckAyCgptaW50X2Z1dHVyZV9uZnRfYWZ0ZXJfZm9yQDg6CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MjUKICAgIC8vIEBhcmM0LmFiaW1ldGhvZAogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy5hbGdvbWludC5jb250cmFjdC5BbGdvbWludC5idXlfbmZ0W3JvdXRpbmddKCkgLT4gdm9pZDoKYnV5X25mdDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weTo3NQogICAgLy8gQGFyYzQuYWJpbWV0aG9kCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18yIC8vIDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDY0CiAgICBidG9pCiAgICB0eG4gR3JvdXBJbmRleAogICAgcHVzaGludCAyCiAgICAtCiAgICBkdXAKICAgIGd0eG5zIFR5cGVFbnVtCiAgICBwdXNoaW50IDQgLy8gYXhmZXIKICAgID09CiAgICBhc3NlcnQgLy8gdHJhbnNhY3Rpb24gdHlwZSBpcyBheGZlcgogICAgdHhuIEdyb3VwSW5kZXgKICAgIGludGNfMSAvLyAxCiAgICAtCiAgICBkdXAKICAgIGd0eG5zIFR5cGVFbnVtCiAgICBpbnRjXzEgLy8gcGF5CiAgICA9PQogICAgYXNzZXJ0IC8vIHRyYW5zYWN0aW9uIHR5cGUgaXMgcGF5CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6ODIKICAgIC8vIGFzc2VydCBzZWxmLmluaXRpYWxpemVkLnZhbHVlCiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWNfMCAvLyAiaW5pdGlhbGl6ZWQiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuaW5pdGlhbGl6ZWQgZXhpc3RzCiAgICBhc3NlcnQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weTo4MwogICAgLy8gYXNzZXJ0IGFzc2V0X2lkID4gVUludDY0KDApCiAgICBkaWcgMgogICAgYXNzZXJ0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6ODQKICAgIC8vIGFzc2VydCBzZWxmLm1pbnRlZF9hc3NldHMuZ2V0KGFzc2V0X2lkLCBkZWZhdWx0PVVJbnQ2NCgwKSkgPT0gVUludDY0KDEpCiAgICBkaWcgMgogICAgaXRvYgogICAgYnl0ZWMgNyAvLyAibWFfIgogICAgc3dhcAogICAgY29uY2F0CiAgICBib3hfZ2V0CiAgICBzd2FwCiAgICBidG9pCiAgICBpbnRjXzAgLy8gMAogICAgc3dhcAogICAgdW5jb3ZlciAyCiAgICBzZWxlY3QKICAgIGludGNfMSAvLyAxCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6ODgtODkKICAgIC8vICMgRW5zdXJlIGJ1eWVyIGhhcyBvcHRlZC1pbiBpbiB0aGUgc2FtZSBncm91cC4KICAgIC8vIGFzc2VydCBvcHRfaW4uc2VuZGVyID09IFR4bi5zZW5kZXIKICAgIGRpZyAxCiAgICBndHhucyBTZW5kZXIKICAgIHR4biBTZW5kZXIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weTo5MAogICAgLy8gYXNzZXJ0IG9wdF9pbi5hc3NldF9yZWNlaXZlciA9PSBUeG4uc2VuZGVyCiAgICBkaWcgMQogICAgZ3R4bnMgQXNzZXRSZWNlaXZlcgogICAgdHhuIFNlbmRlcgogICAgPT0KICAgIGFzc2VydAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjkxCiAgICAvLyBhc3NlcnQgb3B0X2luLnhmZXJfYXNzZXQuaWQgPT0gYXNzZXQuaWQKICAgIGRpZyAxCiAgICBndHhucyBYZmVyQXNzZXQKICAgIGRpZyAzCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6OTIKICAgIC8vIGFzc2VydCBvcHRfaW4uYXNzZXRfYW1vdW50ID09IFVJbnQ2NCgwKQogICAgc3dhcAogICAgZ3R4bnMgQXNzZXRBbW91bnQKICAgICEKICAgIGFzc2VydAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5Ojk0CiAgICAvLyBhc3NlcnQgcGF5bWVudC5zZW5kZXIgPT0gVHhuLnNlbmRlcgogICAgZHVwCiAgICBndHhucyBTZW5kZXIKICAgIHR4biBTZW5kZXIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weTo5NQogICAgLy8gYXNzZXJ0IHBheW1lbnQucmVjZWl2ZXIgPT0gR2xvYmFsLmN1cnJlbnRfYXBwbGljYXRpb25fYWRkcmVzcwogICAgZHVwCiAgICBndHhucyBSZWNlaXZlcgogICAgZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weTo5NgogICAgLy8gYXNzZXJ0IHBheW1lbnQuYW1vdW50ID09IHNlbGYuc2FsZV9wcmljZS52YWx1ZQogICAgZ3R4bnMgQW1vdW50CiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWMgNCAvLyAic2FsZV9wcmljZSIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5zYWxlX3ByaWNlIGV4aXN0cwogICAgZGlnIDEKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weTo5OAogICAgLy8gYXBwX2JhbGFuY2UsIGFwcF9vcHRlZCA9IG9wLkFzc2V0SG9sZGluZ0dldC5hc3NldF9iYWxhbmNlKEdsb2JhbC5jdXJyZW50X2FwcGxpY2F0aW9uX2FkZHJlc3MsIGFzc2V0KQogICAgZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKICAgIGRpZyAyCiAgICBhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weTo5OQogICAgLy8gYXNzZXJ0IGFwcF9vcHRlZAogICAgYXNzZXJ0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTAwCiAgICAvLyBhc3NlcnQgYXBwX2JhbGFuY2UgPT0gVUludDY0KDEpCiAgICBpbnRjXzEgLy8gMQogICAgPT0KICAgIGFzc2VydAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjEwMi0xMDgKICAgIC8vICMgVHJhbnNmZXIgTkZUIHRvIGludmVzdG9yIGFuZCBmb3J3YXJkIHBheW1lbnQgdG8gY3JlYXRvci4KICAgIC8vIGl0eG4uQXNzZXRUcmFuc2ZlcigKICAgIC8vICAgICB4ZmVyX2Fzc2V0PWFzc2V0LAogICAgLy8gICAgIGFzc2V0X3JlY2VpdmVyPVR4bi5zZW5kZXIsCiAgICAvLyAgICAgYXNzZXRfYW1vdW50PVVJbnQ2NCgxKSwKICAgIC8vICAgICBmZWU9MCwKICAgIC8vICkuc3VibWl0KCkKICAgIGl0eG5fYmVnaW4KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weToxMDUKICAgIC8vIGFzc2V0X3JlY2VpdmVyPVR4bi5zZW5kZXIsCiAgICB0eG4gU2VuZGVyCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTA2CiAgICAvLyBhc3NldF9hbW91bnQ9VUludDY0KDEpLAogICAgaW50Y18xIC8vIDEKICAgIGl0eG5fZmllbGQgQXNzZXRBbW91bnQKICAgIGl0eG5fZmllbGQgQXNzZXRSZWNlaXZlcgogICAgc3dhcAogICAgaXR4bl9maWVsZCBYZmVyQXNzZXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weToxMDItMTAzCiAgICAvLyAjIFRyYW5zZmVyIE5GVCB0byBpbnZlc3RvciBhbmQgZm9yd2FyZCBwYXltZW50IHRvIGNyZWF0b3IuCiAgICAvLyBpdHhuLkFzc2V0VHJhbnNmZXIoCiAgICBwdXNoaW50IDQgLy8gYXhmZXIKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weToxMDcKICAgIC8vIGZlZT0wLAogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTAyLTEwOAogICAgLy8gIyBUcmFuc2ZlciBORlQgdG8gaW52ZXN0b3IgYW5kIGZvcndhcmQgcGF5bWVudCB0byBjcmVhdG9yLgogICAgLy8gaXR4bi5Bc3NldFRyYW5zZmVyKAogICAgLy8gICAgIHhmZXJfYXNzZXQ9YXNzZXQsCiAgICAvLyAgICAgYXNzZXRfcmVjZWl2ZXI9VHhuLnNlbmRlciwKICAgIC8vICAgICBhc3NldF9hbW91bnQ9VUludDY0KDEpLAogICAgLy8gICAgIGZlZT0wLAogICAgLy8gKS5zdWJtaXQoKQogICAgaXR4bl9zdWJtaXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weToxMDktMTEzCiAgICAvLyBpdHhuLlBheW1lbnQoCiAgICAvLyAgICAgcmVjZWl2ZXI9c2VsZi5jcmVhdG9yLnZhbHVlLAogICAgLy8gICAgIGFtb3VudD1wYXltZW50LmFtb3VudCwKICAgIC8vICAgICBmZWU9MCwKICAgIC8vICkuc3VibWl0KCkKICAgIGl0eG5fYmVnaW4KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weToxMTAKICAgIC8vIHJlY2VpdmVyPXNlbGYuY3JlYXRvci52YWx1ZSwKICAgIGludGNfMCAvLyAwCiAgICBieXRlYyA2IC8vICJjcmVhdG9yIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmNyZWF0b3IgZXhpc3RzCiAgICBpdHhuX2ZpZWxkIFJlY2VpdmVyCiAgICBpdHhuX2ZpZWxkIEFtb3VudAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjEwOQogICAgLy8gaXR4bi5QYXltZW50KAogICAgaW50Y18xIC8vIHBheQogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjExMgogICAgLy8gZmVlPTAsCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weToxMDktMTEzCiAgICAvLyBpdHhuLlBheW1lbnQoCiAgICAvLyAgICAgcmVjZWl2ZXI9c2VsZi5jcmVhdG9yLnZhbHVlLAogICAgLy8gICAgIGFtb3VudD1wYXltZW50LmFtb3VudCwKICAgIC8vICAgICBmZWU9MCwKICAgIC8vICkuc3VibWl0KCkKICAgIGl0eG5fc3VibWl0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6NzUKICAgIC8vIEBhcmM0LmFiaW1ldGhvZAogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy5hbGdvbWludC5jb250cmFjdC5BbGdvbWludC5yZXBvcnRfaW5jb21lW3JvdXRpbmddKCkgLT4gdm9pZDoKcmVwb3J0X2luY29tZToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weToxMTUKICAgIC8vIEBhcmM0LmFiaW1ldGhvZAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwCiAgICBsZW4KICAgIGludGNfMiAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgZHVwCiAgICBsZW4KICAgIGludGNfMiAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgdHhuIEdyb3VwSW5kZXgKICAgIGludGNfMSAvLyAxCiAgICAtCiAgICBkdXAKICAgIGd0eG5zIFR5cGVFbnVtCiAgICBpbnRjXzEgLy8gcGF5CiAgICA9PQogICAgYXNzZXJ0IC8vIHRyYW5zYWN0aW9uIHR5cGUgaXMgcGF5CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTE5CiAgICAvLyBhc3NlcnQgc2VsZi5pbml0aWFsaXplZC52YWx1ZQogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjXzAgLy8gImluaXRpYWxpemVkIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmluaXRpYWxpemVkIGV4aXN0cwogICAgYXNzZXJ0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTIwCiAgICAvLyBhc3NlcnQgVHhuLnNlbmRlciA9PSBzZWxmLmNyZWF0b3IudmFsdWUKICAgIHR4biBTZW5kZXIKICAgIGludGNfMCAvLyAwCiAgICBieXRlYyA2IC8vICJjcmVhdG9yIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmNyZWF0b3IgZXhpc3RzCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTIxCiAgICAvLyBhc3NlcnQgcXVhcnRlciA+IHNlbGYubGFzdF9yZXBvcnRlZF9xdWFydGVyLnZhbHVlCiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWNfMSAvLyAibGFzdF9yZXBvcnRlZF9xdWFydGVyIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmxhc3RfcmVwb3J0ZWRfcXVhcnRlciBleGlzdHMKICAgIGRpZyAzCiAgICA8CiAgICBhc3NlcnQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weToxMjIKICAgIC8vIGFzc2VydCBpbmNvbWVfYW1vdW50ID4gVUludDY0KDApCiAgICBkaWcgMQogICAgYXNzZXJ0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTI0CiAgICAvLyB0b3RhbF9wYXlvdXQgPSAoaW5jb21lX2Ftb3VudCAqIHNlbGYudG90YWxfcGN0X2Jwcy52YWx1ZSkgLy8gVUludDY0KDEwXzAwMCkKICAgIGludGNfMCAvLyAwCiAgICBieXRlY18zIC8vICJ0b3RhbF9wY3RfYnBzIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLnRvdGFsX3BjdF9icHMgZXhpc3RzCiAgICBkaWcgMgogICAgKgogICAgaW50Y18zIC8vIDEwMDAwCiAgICAvCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTI1CiAgICAvLyBhc3NlcnQgdG90YWxfcGF5b3V0ID4gVUludDY0KDApCiAgICBkdXAKICAgIGFzc2VydAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjEyNy0xMjgKICAgIC8vICMgUmVxdWlyZSB0aGUgY3JlYXRvciB0byBmdW5kIHRoZSBhcHAgZm9yIHRoaXMgcXVhcnRlcidzIHBheW91dHMuCiAgICAvLyBhc3NlcnQgcGF5b3V0X2Z1bmRpbmcuc2VuZGVyID09IFR4bi5zZW5kZXIKICAgIGRpZyAxCiAgICBndHhucyBTZW5kZXIKICAgIHR4biBTZW5kZXIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weToxMjkKICAgIC8vIGFzc2VydCBwYXlvdXRfZnVuZGluZy5yZWNlaXZlciA9PSBHbG9iYWwuY3VycmVudF9hcHBsaWNhdGlvbl9hZGRyZXNzCiAgICBkaWcgMQogICAgZ3R4bnMgUmVjZWl2ZXIKICAgIGdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTMwCiAgICAvLyBhc3NlcnQgcGF5b3V0X2Z1bmRpbmcuYW1vdW50ID09IHRvdGFsX3BheW91dAogICAgc3dhcAogICAgZ3R4bnMgQW1vdW50CiAgICBkaWcgMQogICAgPT0KICAgIGFzc2VydAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjEzMgogICAgLy8gc2VsZi5sYXN0X3JlcG9ydGVkX3F1YXJ0ZXIudmFsdWUgPSBxdWFydGVyCiAgICBieXRlY18xIC8vICJsYXN0X3JlcG9ydGVkX3F1YXJ0ZXIiCiAgICB1bmNvdmVyIDMKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTMzCiAgICAvLyBzZWxmLmxhc3RfcmVwb3J0ZWRfaW5jb21lLnZhbHVlID0gaW5jb21lX2Ftb3VudAogICAgYnl0ZWMgMTIgLy8gImxhc3RfcmVwb3J0ZWRfaW5jb21lIgogICAgdW5jb3ZlciAyCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjEzNAogICAgLy8gc2VsZi5wYXlvdXRfcGVyX25mdC52YWx1ZSA9IHRvdGFsX3BheW91dCAvLyBzZWxmLnRvdGFsX25mdHMudmFsdWUKICAgIGludGNfMCAvLyAwCiAgICBieXRlY18yIC8vICJ0b3RhbF9uZnRzIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLnRvdGFsX25mdHMgZXhpc3RzCiAgICAvCiAgICBieXRlYyA1IC8vICJwYXlvdXRfcGVyX25mdCIKICAgIHN3YXAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTE1CiAgICAvLyBAYXJjNC5hYmltZXRob2QKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCgovLyBzbWFydF9jb250cmFjdHMuYWxnb21pbnQuY29udHJhY3QuQWxnb21pbnQuY2xhaW1fcGF5b3V0W3JvdXRpbmddKCkgLT4gdm9pZDoKY2xhaW1fcGF5b3V0OgogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjEzNgogICAgLy8gQGFyYzQuYWJpbWV0aG9kCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18yIC8vIDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDY0CiAgICBidG9pCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTM4CiAgICAvLyBhc3NlcnQgc2VsZi5pbml0aWFsaXplZC52YWx1ZQogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjXzAgLy8gImluaXRpYWxpemVkIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmluaXRpYWxpemVkIGV4aXN0cwogICAgYXNzZXJ0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTM5CiAgICAvLyBhc3NlcnQgYXNzZXRfaWQgPiBVSW50NjQoMCkKICAgIGR1cAogICAgYXNzZXJ0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTQwCiAgICAvLyBhc3NlcnQgc2VsZi5taW50ZWRfYXNzZXRzLmdldChhc3NldF9pZCwgZGVmYXVsdD1VSW50NjQoMCkpID09IFVJbnQ2NCgxKQogICAgZHVwCiAgICBpdG9iCiAgICBieXRlYyA3IC8vICJtYV8iCiAgICBkaWcgMQogICAgY29uY2F0CiAgICBib3hfZ2V0CiAgICBzd2FwCiAgICBidG9pCiAgICBpbnRjXzAgLy8gMAogICAgc3dhcAogICAgdW5jb3ZlciAyCiAgICBzZWxlY3QKICAgIGludGNfMSAvLyAxCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTQxCiAgICAvLyBhc3NlcnQgc2VsZi5sYXN0X3JlcG9ydGVkX3F1YXJ0ZXIudmFsdWUgPiBVSW50NjQoMCkKICAgIGludGNfMCAvLyAwCiAgICBieXRlY18xIC8vICJsYXN0X3JlcG9ydGVkX3F1YXJ0ZXIiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYubGFzdF9yZXBvcnRlZF9xdWFydGVyIGV4aXN0cwogICAgZHVwCiAgICBhc3NlcnQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weToxNDMKICAgIC8vIGhvbGRlcl9iYWxhbmNlLCBob2xkZXJfb3B0ZWQgPSBvcC5Bc3NldEhvbGRpbmdHZXQuYXNzZXRfYmFsYW5jZShUeG4uc2VuZGVyLCBBc3NldChhc3NldF9pZCkpCiAgICB0eG4gU2VuZGVyCiAgICB1bmNvdmVyIDMKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjE0NAogICAgLy8gYXNzZXJ0IGhvbGRlcl9vcHRlZAogICAgYXNzZXJ0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTQ1CiAgICAvLyBhc3NlcnQgaG9sZGVyX2JhbGFuY2UgPT0gVUludDY0KDEpCiAgICBpbnRjXzEgLy8gMQogICAgPT0KICAgIGFzc2VydAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjE0NwogICAgLy8gY2xhaW1lZCA9IHNlbGYubGFzdF9jbGFpbWVkX3F1YXJ0ZXIuZ2V0KGFzc2V0X2lkLCBkZWZhdWx0PVVJbnQ2NCgwKSkKICAgIGJ5dGVjIDEzIC8vICJsY18iCiAgICB1bmNvdmVyIDIKICAgIGNvbmNhdAogICAgZHVwCiAgICBib3hfZ2V0CiAgICBzd2FwCiAgICBidG9pCiAgICBpbnRjXzAgLy8gMAogICAgc3dhcAogICAgdW5jb3ZlciAyCiAgICBzZWxlY3QKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weToxNDgKICAgIC8vIGFzc2VydCBjbGFpbWVkIDwgc2VsZi5sYXN0X3JlcG9ydGVkX3F1YXJ0ZXIudmFsdWUKICAgIGRpZyAyCiAgICA8CiAgICBhc3NlcnQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weToxNDkKICAgIC8vIGFzc2VydCBzZWxmLnBheW91dF9wZXJfbmZ0LnZhbHVlID4gVUludDY0KDApCiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWMgNSAvLyAicGF5b3V0X3Blcl9uZnQiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYucGF5b3V0X3Blcl9uZnQgZXhpc3RzCiAgICBkdXAKICAgIGFzc2VydAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjE1MS0xNTUKICAgIC8vIGl0eG4uUGF5bWVudCgKICAgIC8vICAgICBhbW91bnQ9c2VsZi5wYXlvdXRfcGVyX25mdC52YWx1ZSwKICAgIC8vICAgICByZWNlaXZlcj1UeG4uc2VuZGVyLAogICAgLy8gICAgIGZlZT0wLAogICAgLy8gKS5zdWJtaXQoKQogICAgaXR4bl9iZWdpbgogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjE1MwogICAgLy8gcmVjZWl2ZXI9VHhuLnNlbmRlciwKICAgIHR4biBTZW5kZXIKICAgIGl0eG5fZmllbGQgUmVjZWl2ZXIKICAgIGl0eG5fZmllbGQgQW1vdW50CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTUxCiAgICAvLyBpdHhuLlBheW1lbnQoCiAgICBpbnRjXzEgLy8gcGF5CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTU0CiAgICAvLyBmZWU9MCwKICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjE1MS0xNTUKICAgIC8vIGl0eG4uUGF5bWVudCgKICAgIC8vICAgICBhbW91bnQ9c2VsZi5wYXlvdXRfcGVyX25mdC52YWx1ZSwKICAgIC8vICAgICByZWNlaXZlcj1UeG4uc2VuZGVyLAogICAgLy8gICAgIGZlZT0wLAogICAgLy8gKS5zdWJtaXQoKQogICAgaXR4bl9zdWJtaXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weToxNTcKICAgIC8vIHNlbGYubGFzdF9jbGFpbWVkX3F1YXJ0ZXJbYXNzZXRfaWRdID0gc2VsZi5sYXN0X3JlcG9ydGVkX3F1YXJ0ZXIudmFsdWUKICAgIHN3YXAKICAgIGl0b2IKICAgIGJveF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weToxMzYKICAgIC8vIEBhcmM0LmFiaW1ldGhvZAogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy5hbGdvbWludC5jb250cmFjdC5BbGdvbWludC5nZXRfcGVuZGluZ19wYXlvdXRbcm91dGluZ10oKSAtPiB2b2lkOgpnZXRfcGVuZGluZ19wYXlvdXQ6CiAgICBwdXNoYnl0ZXMgIiIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weToxNTkKICAgIC8vIEBhcmM0LmFiaW1ldGhvZChyZWFkb25seT1UcnVlKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwCiAgICBsZW4KICAgIGludGNfMiAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgZHVwCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBkdXAKICAgIGNvdmVyIDIKICAgIGR1cAogICAgbGVuCiAgICBwdXNoaW50IDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnN0YXRpY19hcnJheTxhcmM0LnVpbnQ4LCAzMj4KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weToxNjEKICAgIC8vIGFzc2VydCBzZWxmLmluaXRpYWxpemVkLnZhbHVlCiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWNfMCAvLyAiaW5pdGlhbGl6ZWQiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuaW5pdGlhbGl6ZWQgZXhpc3RzCiAgICBhc3NlcnQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weToxNjIKICAgIC8vIGFzc2VydCBhc3NldF9pZCA+IFVJbnQ2NCgwKQogICAgZGlnIDEKICAgIGFzc2VydAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjE2MwogICAgLy8gYXNzZXJ0IHNlbGYubWludGVkX2Fzc2V0cy5nZXQoYXNzZXRfaWQsIGRlZmF1bHQ9VUludDY0KDApKSA9PSBVSW50NjQoMSkKICAgIHN3YXAKICAgIGl0b2IKICAgIGR1cAogICAgY292ZXIgMgogICAgYnl0ZWMgNyAvLyAibWFfIgogICAgc3dhcAogICAgY29uY2F0CiAgICBib3hfZ2V0CiAgICBzd2FwCiAgICBidG9pCiAgICBpbnRjXzAgLy8gMAogICAgc3dhcAogICAgdW5jb3ZlciAyCiAgICBzZWxlY3QKICAgIGludGNfMSAvLyAxCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTY0CiAgICAvLyBhc3NlcnQgYWRkcmVzcyAhPSBHbG9iYWwuemVyb19hZGRyZXNzCiAgICBnbG9iYWwgWmVyb0FkZHJlc3MKICAgICE9CiAgICBhc3NlcnQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weToxNjYKICAgIC8vIGlmIHNlbGYubGFzdF9yZXBvcnRlZF9xdWFydGVyLnZhbHVlID09IFVJbnQ2NCgwKToKICAgIGludGNfMCAvLyAwCiAgICBieXRlY18xIC8vICJsYXN0X3JlcG9ydGVkX3F1YXJ0ZXIiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYubGFzdF9yZXBvcnRlZF9xdWFydGVyIGV4aXN0cwogICAgYm56IGdldF9wZW5kaW5nX3BheW91dF9hZnRlcl9pZl9lbHNlQDMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weToxNjcKICAgIC8vIHJldHVybiBVSW50NjQoMCkKICAgIGludGNfMCAvLyAwCgpnZXRfcGVuZGluZ19wYXlvdXRfYWZ0ZXJfaW5saW5lZF9zbWFydF9jb250cmFjdHMuYWxnb21pbnQuY29udHJhY3QuQWxnb21pbnQuZ2V0X3BlbmRpbmdfcGF5b3V0QDEwOgogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjE1OQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHJlYWRvbmx5PVRydWUpCiAgICBpdG9iCiAgICBieXRlYyAxNCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKZ2V0X3BlbmRpbmdfcGF5b3V0X2FmdGVyX2lmX2Vsc2VAMzoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weToxNjkKICAgIC8vIGhvbGRlcl9iYWxhbmNlLCBob2xkZXJfb3B0ZWQgPSBvcC5Bc3NldEhvbGRpbmdHZXQuYXNzZXRfYmFsYW5jZShhZGRyZXNzLCBBc3NldChhc3NldF9pZCkpCiAgICBkaWcgMQogICAgZGlnIDMKICAgIGFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQogICAgc3dhcAogICAgYnVyeSA1CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTcwCiAgICAvLyBpZiBub3QgaG9sZGVyX29wdGVkOgogICAgYm56IGdldF9wZW5kaW5nX3BheW91dF9hZnRlcl9pZl9lbHNlQDUKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weToxNzEKICAgIC8vIHJldHVybiBVSW50NjQoMCkKICAgIGludGNfMCAvLyAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTU5CiAgICAvLyBAYXJjNC5hYmltZXRob2QocmVhZG9ubHk9VHJ1ZSkKICAgIGIgZ2V0X3BlbmRpbmdfcGF5b3V0X2FmdGVyX2lubGluZWRfc21hcnRfY29udHJhY3RzLmFsZ29taW50LmNvbnRyYWN0LkFsZ29taW50LmdldF9wZW5kaW5nX3BheW91dEAxMAoKZ2V0X3BlbmRpbmdfcGF5b3V0X2FmdGVyX2lmX2Vsc2VANToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weToxNzIKICAgIC8vIGlmIGhvbGRlcl9iYWxhbmNlICE9IFVJbnQ2NCgxKToKICAgIGRpZyAzCiAgICBpbnRjXzEgLy8gMQogICAgIT0KICAgIGJ6IGdldF9wZW5kaW5nX3BheW91dF9hZnRlcl9pZl9lbHNlQDcKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weToxNzMKICAgIC8vIHJldHVybiBVSW50NjQoMCkKICAgIGludGNfMCAvLyAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTU5CiAgICAvLyBAYXJjNC5hYmltZXRob2QocmVhZG9ubHk9VHJ1ZSkKICAgIGIgZ2V0X3BlbmRpbmdfcGF5b3V0X2FmdGVyX2lubGluZWRfc21hcnRfY29udHJhY3RzLmFsZ29taW50LmNvbnRyYWN0LkFsZ29taW50LmdldF9wZW5kaW5nX3BheW91dEAxMAoKZ2V0X3BlbmRpbmdfcGF5b3V0X2FmdGVyX2lmX2Vsc2VANzoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weToxNzUKICAgIC8vIGNsYWltZWQgPSBzZWxmLmxhc3RfY2xhaW1lZF9xdWFydGVyLmdldChhc3NldF9pZCwgZGVmYXVsdD1VSW50NjQoMCkpCiAgICBieXRlYyAxMyAvLyAibGNfIgogICAgZGlnIDEKICAgIGNvbmNhdAogICAgYm94X2dldAogICAgc3dhcAogICAgYnRvaQogICAgaW50Y18wIC8vIDAKICAgIHN3YXAKICAgIHVuY292ZXIgMgogICAgc2VsZWN0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTc2CiAgICAvLyBpZiBjbGFpbWVkIDwgc2VsZi5sYXN0X3JlcG9ydGVkX3F1YXJ0ZXIudmFsdWU6CiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWNfMSAvLyAibGFzdF9yZXBvcnRlZF9xdWFydGVyIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmxhc3RfcmVwb3J0ZWRfcXVhcnRlciBleGlzdHMKICAgIDwKICAgIGJ6IGdldF9wZW5kaW5nX3BheW91dF9hZnRlcl9pZl9lbHNlQDkKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weToxNzcKICAgIC8vIHJldHVybiBzZWxmLnBheW91dF9wZXJfbmZ0LnZhbHVlCiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWMgNSAvLyAicGF5b3V0X3Blcl9uZnQiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYucGF5b3V0X3Blcl9uZnQgZXhpc3RzCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTU5CiAgICAvLyBAYXJjNC5hYmltZXRob2QocmVhZG9ubHk9VHJ1ZSkKICAgIGIgZ2V0X3BlbmRpbmdfcGF5b3V0X2FmdGVyX2lubGluZWRfc21hcnRfY29udHJhY3RzLmFsZ29taW50LmNvbnRyYWN0LkFsZ29taW50LmdldF9wZW5kaW5nX3BheW91dEAxMAoKZ2V0X3BlbmRpbmdfcGF5b3V0X2FmdGVyX2lmX2Vsc2VAOToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weToxNzgKICAgIC8vIHJldHVybiBVSW50NjQoMCkKICAgIGludGNfMCAvLyAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTU5CiAgICAvLyBAYXJjNC5hYmltZXRob2QocmVhZG9ubHk9VHJ1ZSkKICAgIGIgZ2V0X3BlbmRpbmdfcGF5b3V0X2FmdGVyX2lubGluZWRfc21hcnRfY29udHJhY3RzLmFsZ29taW50LmNvbnRyYWN0LkFsZ29taW50LmdldF9wZW5kaW5nX3BheW91dEAxMAoKCi8vIHNtYXJ0X2NvbnRyYWN0cy5hbGdvbWludC5jb250cmFjdC5BbGdvbWludC5nZXRfdGVybXNbcm91dGluZ10oKSAtPiB2b2lkOgpnZXRfdGVybXM6CiAgICBpbnRjXzAgLy8gMAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjE4NS0xODcKICAgIC8vICMgTXVzdCBiZSBzYWZlIHRvIGNhbGwgYmVmb3JlIG1pbnRpbmcvaW5pdGlhbGl6YXRpb24gKFVJIGNhbGxzIHRoaXMgYWZ0ZXIgZGVwbG95KS4KICAgIC8vICMgUmV0dXJuIHplcm8vZGVmYXVsdCB2YWx1ZXMgdW50aWwgaW5pdGlhbGl6ZWQuCiAgICAvLyBpZiBub3Qgc2VsZi5pbml0aWFsaXplZC52YWx1ZToKICAgIGR1cAogICAgYnl0ZWNfMCAvLyAiaW5pdGlhbGl6ZWQiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuaW5pdGlhbGl6ZWQgZXhpc3RzCiAgICBibnogZ2V0X3Rlcm1zX2FmdGVyX2lmX2Vsc2VAMwogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjE4OQogICAgLy8gR2xvYmFsLnplcm9fYWRkcmVzcywKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgYnVyeSAxCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTkwCiAgICAvLyBVSW50NjQoMCksCiAgICBpbnRjXzAgLy8gMAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjE5MS0xOTUKICAgIC8vIFVJbnQ2NCgwKSwKICAgIC8vIFVJbnQ2NCgwKSwKICAgIC8vIFVJbnQ2NCgwKSwKICAgIC8vIFVJbnQ2NCgwKSwKICAgIC8vIFVJbnQ2NCgwKSwKICAgIGR1cG4gNQoKZ2V0X3Rlcm1zX2FmdGVyX2lubGluZWRfc21hcnRfY29udHJhY3RzLmFsZ29taW50LmNvbnRyYWN0LkFsZ29taW50LmdldF90ZXJtc0A0OgogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjE4MAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHJlYWRvbmx5PVRydWUpCiAgICB1bmNvdmVyIDUKICAgIGl0b2IKICAgIGRpZyA2CiAgICBzd2FwCiAgICBjb25jYXQKICAgIHVuY292ZXIgNQogICAgaXRvYgogICAgY29uY2F0CiAgICB1bmNvdmVyIDQKICAgIGl0b2IKICAgIGNvbmNhdAogICAgdW5jb3ZlciAzCiAgICBpdG9iCiAgICBjb25jYXQKICAgIHVuY292ZXIgMgogICAgaXRvYgogICAgY29uY2F0CiAgICBzd2FwCiAgICBpdG9iCiAgICBjb25jYXQKICAgIGJ5dGVjIDE0IC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgpnZXRfdGVybXNfYWZ0ZXJfaWZfZWxzZUAzOgogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjE5OAogICAgLy8gc2VsZi5jcmVhdG9yLnZhbHVlLAogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjIDYgLy8gImNyZWF0b3IiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuY3JlYXRvciBleGlzdHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weToxOTkKICAgIC8vIHNlbGYudG90YWxfbmZ0cy52YWx1ZSwKICAgIGludGNfMCAvLyAwCiAgICBieXRlY18yIC8vICJ0b3RhbF9uZnRzIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLnRvdGFsX25mdHMgZXhpc3RzCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MjAwCiAgICAvLyBzZWxmLnRvdGFsX3BjdF9icHMudmFsdWUsCiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWNfMyAvLyAidG90YWxfcGN0X2JwcyIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi50b3RhbF9wY3RfYnBzIGV4aXN0cwogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjIwMQogICAgLy8gc2VsZi5kdXJhdGlvbl95ZWFycy52YWx1ZSwKICAgIGludGNfMCAvLyAwCiAgICBieXRlYyA4IC8vICJkdXJhdGlvbl95ZWFycyIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5kdXJhdGlvbl95ZWFycyBleGlzdHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weToyMDIKICAgIC8vIHNlbGYuc3RhcnRfcXVhcnRlci52YWx1ZSwKICAgIGludGNfMCAvLyAwCiAgICBieXRlYyA5IC8vICJzdGFydF9xdWFydGVyIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLnN0YXJ0X3F1YXJ0ZXIgZXhpc3RzCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MjAzCiAgICAvLyBzZWxmLnNhbGVfcHJpY2UudmFsdWUsCiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWMgNCAvLyAic2FsZV9wcmljZSIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5zYWxlX3ByaWNlIGV4aXN0cwogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjIwNAogICAgLy8gc2VsZi5maXJzdF9hc3NldF9pZC52YWx1ZSwKICAgIGludGNfMCAvLyAwCiAgICBieXRlYyAxMCAvLyAiZmlyc3RfYXNzZXRfaWQiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuZmlyc3RfYXNzZXRfaWQgZXhpc3RzCiAgICB1bmNvdmVyIDYKICAgIGJ1cnkgNwogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjE4MAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHJlYWRvbmx5PVRydWUpCiAgICBiIGdldF90ZXJtc19hZnRlcl9pbmxpbmVkX3NtYXJ0X2NvbnRyYWN0cy5hbGdvbWludC5jb250cmFjdC5BbGdvbWludC5nZXRfdGVybXNANAo=","clear":"I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuY2xlYXJfc3RhdGVfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIHB1c2hpbnQgMQogICAgcmV0dXJuCg=="},"byteCode":{"approval":"CyAEAAEIkE4mDwtpbml0aWFsaXplZBVsYXN0X3JlcG9ydGVkX3F1YXJ0ZXIKdG90YWxfbmZ0cw10b3RhbF9wY3RfYnBzCnNhbGVfcHJpY2UOcGF5b3V0X3Blcl9uZnQHY3JlYXRvcgNtYV8OZHVyYXRpb25feWVhcnMNc3RhcnRfcXVhcnRlcg5maXJzdF9hc3NldF9pZA9wY3RfcGVyX25mdF9icHMUbGFzdF9yZXBvcnRlZF9pbmNvbWUDbGNfBBUffHUxGEAAKCoiZysiZycIImcnCSJnJwQiZycKImcnCyJnKSJnJwwiZycFImcoImcxG0EAOTEZFEQxGESCBgSsbhoEBN2YDm0EvY3JfgSUXxd3BFc3cXgEvvwWxTYaAI4GAAkBMwHSAj0CmwMfADEZFDEYFBBDgAA2GgFJFSQSRBdJNhoCSRUkEkQXNhoDSRUkEkQXNhoESRUkEkQXNhoFSRUkEkQXMRYjCUk4ECMSRCIoZUQUREsFREsEREsEJQ5ESwNESwJESwFESTgAMQASREk4BzIKEkQ4CIHAhD0PRCcGMQBnKk8FZytPBGcnCE8DZycJTwJnJwRMZyIrZUQiKmVECicLTGcoI2ciSUsCDEEAi7EyCkmyKrIpgDB0ZW1wbGF0ZS1pcGZzOi8ve2lwZnNjaWQ6MTpyYXc6cmVzZXJ2ZTpzaGEyLTI1Nn2yJ4AFRkVORlSyJYASRnV0dXJlIEVhcm5pbmcgTkZUsiYisiQisiMjsiKBA7IQIrIBs7Q8RQNJQAAFJwpLA2dLAhYnB0xQIxa/SSMIRQFC/24jQzYaAUkVJBJEFzEWgQIJSTgQgQQSRDEWIwlJOBAjEkQiKGVEREsCREsCFicHTFC+TBciTE8CTSMSREsBOAAxABJESwE4FDEAEkRLATgRSwMSREw4EhRESTgAMQASREk4BzIKEkQ4CCInBGVESwESRDIKSwJwAEQjEkSxMQAjshKyFEyyEYEEshAisgGzsSInBmVEsgeyCCOyECKyAbMjQzYaAUkVJBJEFzYaAkkVJBJEFzEWIwlJOBAjEkQiKGVERDEAIicGZUQSRCIpZURLAwxESwFEIitlREsCCyUKSURLATgAMQASREsBOAcyChJETDgISwESRClPA2cnDE8CZyIqZUQKJwVMZyNDNhoBSRUkEkQXIihlRERJREkWJwdLAVC+TBciTE8CTSMSRCIpZURJRDEATwNwAEQjEkQnDU8CUEm+TBciTE8CTUsCDEQiJwVlRElEsTEAsgeyCCOyECKyAbNMFr8jQ4AANhoBSRUkEkQXSTYaAklOAkkVgSASRCIoZURESwFETBZJTgInB0xQvkwXIkxPAk0jEkQyAxNEIillREAACSIWJw5MULAjQ0sBSwNwAExFBUAABCJC/+hLAyMTQQAEIkL/3ScNSwFQvkwXIkxPAk0iKWVEDEEACCInBWVEQv/AIkL/vCJJKGVEQAAoMgNFASJHBU8FFksGTFBPBRZQTwQWUE8DFlBPAhZQTBZQJw5MULAjQyInBmVEIiplRCIrZUQiJwhlRCInCWVEIicEZUQiJwplRE8GRQdC/7c=","clear":"C4EBQw=="},"compilerInfo":{"compiler":"puya","compilerVersion":{"major":5,"minor":8,"patch":0}},"events":[],"templateVariables":{}} as unknown as Arc56Contract +export const APP_SPEC: Arc56Contract = {"name":"Algomint","structs":{},"methods":[{"name":"mint_future_nft","args":[{"type":"uint64","name":"total_nfts"},{"type":"uint64","name":"total_pct_bps"},{"type":"uint64","name":"duration_years"},{"type":"uint64","name":"start_quarter"},{"type":"uint64","name":"sale_price"},{"type":"pay","name":"mbr_payment"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]},"readonly":false,"events":[],"recommendations":{}},{"name":"buy_nft","args":[{"type":"uint64","name":"asset_id"},{"type":"axfer","name":"opt_in"},{"type":"pay","name":"payment"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]},"readonly":false,"events":[],"recommendations":{}},{"name":"report_income","args":[{"type":"uint64","name":"quarter"},{"type":"uint64","name":"income_amount"},{"type":"pay","name":"payout_funding"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]},"readonly":false,"events":[],"recommendations":{}},{"name":"claim_payout","args":[{"type":"uint64","name":"asset_id"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]},"readonly":false,"events":[],"recommendations":{}},{"name":"get_pending_payout","args":[{"type":"uint64","name":"asset_id"},{"type":"address","name":"address"}],"returns":{"type":"uint64"},"actions":{"create":[],"call":["NoOp"]},"readonly":true,"events":[],"recommendations":{}},{"name":"get_terms","args":[],"returns":{"type":"(address,uint64,uint64,uint64,uint64,uint64,uint64)"},"actions":{"create":[],"call":["NoOp"]},"readonly":true,"desc":"Returns: (creator, total_nfts, total_pct_bps, duration_years, start_quarter, sale_price, first_asset_id)","events":[],"recommendations":{}}],"arcs":[22,28],"networks":{},"state":{"schema":{"global":{"ints":11,"bytes":1},"local":{"ints":0,"bytes":0}},"keys":{"global":{"creator":{"keyType":"AVMString","valueType":"address","key":"Y3JlYXRvcg=="},"total_nfts":{"keyType":"AVMString","valueType":"AVMUint64","key":"dG90YWxfbmZ0cw=="},"total_pct_bps":{"keyType":"AVMString","valueType":"AVMUint64","key":"dG90YWxfcGN0X2Jwcw=="},"duration_years":{"keyType":"AVMString","valueType":"AVMUint64","key":"ZHVyYXRpb25feWVhcnM="},"start_quarter":{"keyType":"AVMString","valueType":"AVMUint64","key":"c3RhcnRfcXVhcnRlcg=="},"sale_price":{"keyType":"AVMString","valueType":"AVMUint64","key":"c2FsZV9wcmljZQ=="},"first_asset_id":{"keyType":"AVMString","valueType":"AVMUint64","key":"Zmlyc3RfYXNzZXRfaWQ="},"pct_per_nft_bps":{"keyType":"AVMString","valueType":"AVMUint64","key":"cGN0X3Blcl9uZnRfYnBz"},"last_reported_quarter":{"keyType":"AVMString","valueType":"AVMUint64","key":"bGFzdF9yZXBvcnRlZF9xdWFydGVy"},"last_reported_income":{"keyType":"AVMString","valueType":"AVMUint64","key":"bGFzdF9yZXBvcnRlZF9pbmNvbWU="},"payout_per_nft":{"keyType":"AVMString","valueType":"AVMUint64","key":"cGF5b3V0X3Blcl9uZnQ="},"initialized":{"keyType":"AVMString","valueType":"AVMUint64","key":"aW5pdGlhbGl6ZWQ="}},"local":{},"box":{}},"maps":{"global":{},"local":{},"box":{"last_claimed_quarter":{"keyType":"uint64","valueType":"uint64","prefix":"bGNf"},"minted_assets":{"keyType":"uint64","valueType":"uint64","prefix":"bWFf"}}}},"bareActions":{"create":["NoOp"],"call":[]},"sourceInfo":{"approval":{"sourceInfo":[{"pc":[757,810,1156],"errorMessage":"check self.creator exists"},{"pc":[1169],"errorMessage":"check self.duration_years exists"},{"pc":[1184],"errorMessage":"check self.first_asset_id exists"},{"pc":[373,646,802,890,999,1108],"errorMessage":"check self.initialized exists"},{"pc":[816,915,1031,1087],"errorMessage":"check self.last_reported_quarter exists"},{"pc":[950,1096],"errorMessage":"check self.payout_per_nft exists"},{"pc":[718,1179],"errorMessage":"check self.sale_price exists"},{"pc":[1174],"errorMessage":"check self.start_quarter exists"},{"pc":[452,870,1160],"errorMessage":"check self.total_nfts exists"},{"pc":[448,827,1164],"errorMessage":"check self.total_pct_bps exists"},{"pc":[995],"errorMessage":"invalid number of bytes for arc4.static_array"},{"pc":[321,331,340,349,358,619,778,787,885,981],"errorMessage":"invalid number of bytes for arc4.uint64"},{"pc":[632],"errorMessage":"transaction type is axfer"},{"pc":[369,642,798],"errorMessage":"transaction type is pay"}],"pcOffsetMethod":"none"},"clear":{"sourceInfo":[],"pcOffsetMethod":"none"}},"source":{"approval":"I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuYXBwcm92YWxfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIGludGNibG9jayAwIDEgOCAxMDAwMAogICAgYnl0ZWNibG9jayAiaW5pdGlhbGl6ZWQiICJsYXN0X3JlcG9ydGVkX3F1YXJ0ZXIiICJ0b3RhbF9uZnRzIiAidG90YWxfcGN0X2JwcyIgInNhbGVfcHJpY2UiICJwYXlvdXRfcGVyX25mdCIgImNyZWF0b3IiICJtYV8iICJkdXJhdGlvbl95ZWFycyIgInN0YXJ0X3F1YXJ0ZXIiICJmaXJzdF9hc3NldF9pZCIgInBjdF9wZXJfbmZ0X2JwcyIgImxhc3RfcmVwb3J0ZWRfaW5jb21lIiAibGNfIiAweDE1MWY3Yzc1CiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYm56IG1haW5fYWZ0ZXJfaWZfZWxzZUAyCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6OAogICAgLy8gc2VsZi50b3RhbF9uZnRzID0gR2xvYmFsU3RhdGUoVUludDY0KDApKQogICAgYnl0ZWNfMiAvLyAidG90YWxfbmZ0cyIKICAgIGludGNfMCAvLyAwCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjkKICAgIC8vIHNlbGYudG90YWxfcGN0X2JwcyA9IEdsb2JhbFN0YXRlKFVJbnQ2NCgwKSkKICAgIGJ5dGVjXzMgLy8gInRvdGFsX3BjdF9icHMiCiAgICBpbnRjXzAgLy8gMAogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weToxMAogICAgLy8gc2VsZi5kdXJhdGlvbl95ZWFycyA9IEdsb2JhbFN0YXRlKFVJbnQ2NCgwKSkKICAgIGJ5dGVjIDggLy8gImR1cmF0aW9uX3llYXJzIgogICAgaW50Y18wIC8vIDAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTEKICAgIC8vIHNlbGYuc3RhcnRfcXVhcnRlciA9IEdsb2JhbFN0YXRlKFVJbnQ2NCgwKSkKICAgIGJ5dGVjIDkgLy8gInN0YXJ0X3F1YXJ0ZXIiCiAgICBpbnRjXzAgLy8gMAogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weToxMgogICAgLy8gc2VsZi5zYWxlX3ByaWNlID0gR2xvYmFsU3RhdGUoVUludDY0KDApKQogICAgYnl0ZWMgNCAvLyAic2FsZV9wcmljZSIKICAgIGludGNfMCAvLyAwCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjEzCiAgICAvLyBzZWxmLmZpcnN0X2Fzc2V0X2lkID0gR2xvYmFsU3RhdGUoVUludDY0KDApKQogICAgYnl0ZWMgMTAgLy8gImZpcnN0X2Fzc2V0X2lkIgogICAgaW50Y18wIC8vIDAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTQKICAgIC8vIHNlbGYucGN0X3Blcl9uZnRfYnBzID0gR2xvYmFsU3RhdGUoVUludDY0KDApKQogICAgYnl0ZWMgMTEgLy8gInBjdF9wZXJfbmZ0X2JwcyIKICAgIGludGNfMCAvLyAwCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjE1CiAgICAvLyBzZWxmLmxhc3RfcmVwb3J0ZWRfcXVhcnRlciA9IEdsb2JhbFN0YXRlKFVJbnQ2NCgwKSkKICAgIGJ5dGVjXzEgLy8gImxhc3RfcmVwb3J0ZWRfcXVhcnRlciIKICAgIGludGNfMCAvLyAwCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjE2CiAgICAvLyBzZWxmLmxhc3RfcmVwb3J0ZWRfaW5jb21lID0gR2xvYmFsU3RhdGUoVUludDY0KDApKQogICAgYnl0ZWMgMTIgLy8gImxhc3RfcmVwb3J0ZWRfaW5jb21lIgogICAgaW50Y18wIC8vIDAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTcKICAgIC8vIHNlbGYucGF5b3V0X3Blcl9uZnQgPSBHbG9iYWxTdGF0ZShVSW50NjQoMCkpCiAgICBieXRlYyA1IC8vICJwYXlvdXRfcGVyX25mdCIKICAgIGludGNfMCAvLyAwCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjE4CiAgICAvLyBzZWxmLmluaXRpYWxpemVkID0gR2xvYmFsU3RhdGUoRmFsc2UpCiAgICBieXRlY18wIC8vICJpbml0aWFsaXplZCIKICAgIGludGNfMCAvLyAwCiAgICBhcHBfZ2xvYmFsX3B1dAoKbWFpbl9hZnRlcl9pZl9lbHNlQDI6CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6NAogICAgLy8gY2xhc3MgQWxnb21pbnQoQVJDNENvbnRyYWN0KToKICAgIHR4biBOdW1BcHBBcmdzCiAgICBieiBtYWluX19fYWxnb3B5X2RlZmF1bHRfY3JlYXRlQDE1CiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQKICAgIHB1c2hieXRlc3MgMHhhYzZlMWEwNCAweGRkOTgwZTZkIDB4YmQ4ZGM5N2UgMHg5NDVmMTc3NyAweDU3Mzc3MTc4IDB4YmVmYzE2YzUgLy8gbWV0aG9kICJtaW50X2Z1dHVyZV9uZnQodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCxwYXkpdm9pZCIsIG1ldGhvZCAiYnV5X25mdCh1aW50NjQsYXhmZXIscGF5KXZvaWQiLCBtZXRob2QgInJlcG9ydF9pbmNvbWUodWludDY0LHVpbnQ2NCxwYXkpdm9pZCIsIG1ldGhvZCAiY2xhaW1fcGF5b3V0KHVpbnQ2NCl2b2lkIiwgbWV0aG9kICJnZXRfcGVuZGluZ19wYXlvdXQodWludDY0LGFkZHJlc3MpdWludDY0IiwgbWV0aG9kICJnZXRfdGVybXMoKShhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KSIKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDAKICAgIG1hdGNoIG1pbnRfZnV0dXJlX25mdCBidXlfbmZ0IHJlcG9ydF9pbmNvbWUgY2xhaW1fcGF5b3V0IGdldF9wZW5kaW5nX3BheW91dCBnZXRfdGVybXMKICAgIGVycgoKbWFpbl9fX2FsZ29weV9kZWZhdWx0X2NyZWF0ZUAxNToKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICAhCiAgICAmJgogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLmFsZ29taW50LmNvbnRyYWN0LkFsZ29taW50Lm1pbnRfZnV0dXJlX25mdFtyb3V0aW5nXSgpIC0+IHZvaWQ6Cm1pbnRfZnV0dXJlX25mdDoKICAgIHB1c2hieXRlcyAiIgogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjI1CiAgICAvLyBAYXJjNC5hYmltZXRob2QKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzIgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIGJ0b2kKICAgIGR1cAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgZHVwCiAgICBsZW4KICAgIGludGNfMiAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwogICAgZHVwCiAgICBsZW4KICAgIGludGNfMiAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAogICAgZHVwCiAgICBsZW4KICAgIGludGNfMiAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQogICAgZHVwCiAgICBsZW4KICAgIGludGNfMiAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgdHhuIEdyb3VwSW5kZXgKICAgIGludGNfMSAvLyAxCiAgICAtCiAgICBkdXAKICAgIGd0eG5zIFR5cGVFbnVtCiAgICBpbnRjXzEgLy8gcGF5CiAgICA9PQogICAgYXNzZXJ0IC8vIHRyYW5zYWN0aW9uIHR5cGUgaXMgcGF5CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MzUKICAgIC8vIGFzc2VydCBub3Qgc2VsZi5pbml0aWFsaXplZC52YWx1ZQogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjXzAgLy8gImluaXRpYWxpemVkIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmluaXRpYWxpemVkIGV4aXN0cwogICAgIQogICAgYXNzZXJ0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MzYKICAgIC8vIGFzc2VydCB0b3RhbF9uZnRzID4gVUludDY0KDApCiAgICBkaWcgNQogICAgYXNzZXJ0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MzcKICAgIC8vIGFzc2VydCB0b3RhbF9wY3RfYnBzID4gVUludDY0KDApCiAgICBkaWcgNAogICAgYXNzZXJ0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MzgKICAgIC8vIGFzc2VydCB0b3RhbF9wY3RfYnBzIDw9IFVJbnQ2NCgxMF8wMDApCiAgICBkaWcgNAogICAgaW50Y18zIC8vIDEwMDAwCiAgICA8PQogICAgYXNzZXJ0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MzkKICAgIC8vIGFzc2VydCBkdXJhdGlvbl95ZWFycyA+IFVJbnQ2NCgwKQogICAgZGlnIDMKICAgIGFzc2VydAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjQwCiAgICAvLyBhc3NlcnQgc3RhcnRfcXVhcnRlciA+IFVJbnQ2NCgwKQogICAgZGlnIDIKICAgIGFzc2VydAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjQxCiAgICAvLyBhc3NlcnQgc2FsZV9wcmljZSA+IFVJbnQ2NCgwKQogICAgZGlnIDEKICAgIGFzc2VydAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjQzCiAgICAvLyBhc3NlcnQgbWJyX3BheW1lbnQuc2VuZGVyID09IFR4bi5zZW5kZXIKICAgIGR1cAogICAgZ3R4bnMgU2VuZGVyCiAgICB0eG4gU2VuZGVyCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6NDQKICAgIC8vIGFzc2VydCBtYnJfcGF5bWVudC5yZWNlaXZlciA9PSBHbG9iYWwuY3VycmVudF9hcHBsaWNhdGlvbl9hZGRyZXNzCiAgICBkdXAKICAgIGd0eG5zIFJlY2VpdmVyCiAgICBnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwogICAgPT0KICAgIGFzc2VydAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjQ1LTQ2CiAgICAvLyAjIE5PVEU6IEV4YWN0IE1CUiBkZXBlbmRzIG9uIHByb3RvY29sIHBhcmFtczsgcmVxdWlyZSBhIHNlbnNpYmxlIG1pbmltdW0gZm9yIGRlbW8uCiAgICAvLyBhc3NlcnQgbWJyX3BheW1lbnQuYW1vdW50ID49IFVJbnQ2NCgxXzAwMF8wMDApCiAgICBndHhucyBBbW91bnQKICAgIHB1c2hpbnQgMTAwMDAwMAogICAgPj0KICAgIGFzc2VydAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjQ4CiAgICAvLyBzZWxmLmNyZWF0b3IudmFsdWUgPSBUeG4uc2VuZGVyCiAgICBieXRlYyA2IC8vICJjcmVhdG9yIgogICAgdHhuIFNlbmRlcgogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weTo0OQogICAgLy8gc2VsZi50b3RhbF9uZnRzLnZhbHVlID0gdG90YWxfbmZ0cwogICAgYnl0ZWNfMiAvLyAidG90YWxfbmZ0cyIKICAgIHVuY292ZXIgNQogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weTo1MAogICAgLy8gc2VsZi50b3RhbF9wY3RfYnBzLnZhbHVlID0gdG90YWxfcGN0X2JwcwogICAgYnl0ZWNfMyAvLyAidG90YWxfcGN0X2JwcyIKICAgIHVuY292ZXIgNAogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weTo1MQogICAgLy8gc2VsZi5kdXJhdGlvbl95ZWFycy52YWx1ZSA9IGR1cmF0aW9uX3llYXJzCiAgICBieXRlYyA4IC8vICJkdXJhdGlvbl95ZWFycyIKICAgIHVuY292ZXIgMwogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weTo1MgogICAgLy8gc2VsZi5zdGFydF9xdWFydGVyLnZhbHVlID0gc3RhcnRfcXVhcnRlcgogICAgYnl0ZWMgOSAvLyAic3RhcnRfcXVhcnRlciIKICAgIHVuY292ZXIgMgogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weTo1MwogICAgLy8gc2VsZi5zYWxlX3ByaWNlLnZhbHVlID0gc2FsZV9wcmljZQogICAgYnl0ZWMgNCAvLyAic2FsZV9wcmljZSIKICAgIHN3YXAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6NTQKICAgIC8vIHNlbGYucGN0X3Blcl9uZnRfYnBzLnZhbHVlID0gc2VsZi50b3RhbF9wY3RfYnBzLnZhbHVlIC8vIHNlbGYudG90YWxfbmZ0cy52YWx1ZQogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjXzMgLy8gInRvdGFsX3BjdF9icHMiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYudG90YWxfcGN0X2JwcyBleGlzdHMKICAgIGludGNfMCAvLyAwCiAgICBieXRlY18yIC8vICJ0b3RhbF9uZnRzIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLnRvdGFsX25mdHMgZXhpc3RzCiAgICAvCiAgICBieXRlYyAxMSAvLyAicGN0X3Blcl9uZnRfYnBzIgogICAgc3dhcAogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weTo1NQogICAgLy8gc2VsZi5pbml0aWFsaXplZC52YWx1ZSA9IFRydWUKICAgIGJ5dGVjXzAgLy8gImluaXRpYWxpemVkIgogICAgaW50Y18xIC8vIDEKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6NTctNTgKICAgIC8vICMgTWludCBhIGZpeGVkIHNlcmllcyBvZiBBUkMtMTkgc3R5bGUgTkZUcyBmcm9tIHRoZSBhcHAgYWNjb3VudC4KICAgIC8vIGZvciBpZHggaW4gdXJhbmdlKHRvdGFsX25mdHMpOgogICAgaW50Y18wIC8vIDAKCm1pbnRfZnV0dXJlX25mdF9mb3JfaGVhZGVyQDI6CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6NTctNTgKICAgIC8vICMgTWludCBhIGZpeGVkIHNlcmllcyBvZiBBUkMtMTkgc3R5bGUgTkZUcyBmcm9tIHRoZSBhcHAgYWNjb3VudC4KICAgIC8vIGZvciBpZHggaW4gdXJhbmdlKHRvdGFsX25mdHMpOgogICAgZHVwCiAgICBkaWcgMgogICAgPAogICAgYnogbWludF9mdXR1cmVfbmZ0X2FmdGVyX2ZvckA4CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6NTktNzAKICAgIC8vIGNyZWF0ZWQgPSBpdHhuLkFzc2V0Q29uZmlnKAogICAgLy8gICAgIHRvdGFsPTEsCiAgICAvLyAgICAgZGVjaW1hbHM9MCwKICAgIC8vICAgICBkZWZhdWx0X2Zyb3plbj1GYWxzZSwKICAgIC8vICAgICBhc3NldF9uYW1lPWIiRnV0dXJlIEVhcm5pbmcgTkZUIiwKICAgIC8vICAgICB1bml0X25hbWU9YiJGRU5GVCIsCiAgICAvLyAgICAgIyBBUkMtMTkgdGVtcGxhdGUgVVJMIChDSUQgc291cmNlZCBmcm9tIHJlc2VydmUgYWNjb3VudCBieSBjbGllbnRzKS4KICAgIC8vICAgICB1cmw9YiJ0ZW1wbGF0ZS1pcGZzOi8ve2lwZnNjaWQ6MTpyYXc6cmVzZXJ2ZTpzaGEyLTI1Nn0iLAogICAgLy8gICAgIG1hbmFnZXI9R2xvYmFsLmN1cnJlbnRfYXBwbGljYXRpb25fYWRkcmVzcywKICAgIC8vICAgICByZXNlcnZlPUdsb2JhbC5jdXJyZW50X2FwcGxpY2F0aW9uX2FkZHJlc3MsCiAgICAvLyAgICAgZmVlPTEwMDAsCiAgICAvLyApLnN1Ym1pdCgpCiAgICBpdHhuX2JlZ2luCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6NjcKICAgIC8vIG1hbmFnZXI9R2xvYmFsLmN1cnJlbnRfYXBwbGljYXRpb25fYWRkcmVzcywKICAgIGdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6NjgKICAgIC8vIHJlc2VydmU9R2xvYmFsLmN1cnJlbnRfYXBwbGljYXRpb25fYWRkcmVzcywKICAgIGR1cAogICAgaXR4bl9maWVsZCBDb25maWdBc3NldFJlc2VydmUKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXRNYW5hZ2VyCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6NjUtNjYKICAgIC8vICMgQVJDLTE5IHRlbXBsYXRlIFVSTCAoQ0lEIHNvdXJjZWQgZnJvbSByZXNlcnZlIGFjY291bnQgYnkgY2xpZW50cykuCiAgICAvLyB1cmw9YiJ0ZW1wbGF0ZS1pcGZzOi8ve2lwZnNjaWQ6MTpyYXc6cmVzZXJ2ZTpzaGEyLTI1Nn0iLAogICAgcHVzaGJ5dGVzIDB4NzQ2NTZkNzA2YzYxNzQ2NTJkNjk3MDY2NzMzYTJmMmY3YjY5NzA2NjczNjM2OTY0M2EzMTNhNzI2MTc3M2E3MjY1NzM2NTcyNzY2NTNhNzM2ODYxMzIyZDMyMzUzNjdkCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0VVJMCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6NjQKICAgIC8vIHVuaXRfbmFtZT1iIkZFTkZUIiwKICAgIHB1c2hieXRlcyAweDQ2NDU0ZTQ2NTQKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXRVbml0TmFtZQogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjYzCiAgICAvLyBhc3NldF9uYW1lPWIiRnV0dXJlIEVhcm5pbmcgTkZUIiwKICAgIHB1c2hieXRlcyAweDQ2NzU3NDc1NzI2NTIwNDU2MTcyNmU2OTZlNjcyMDRlNDY1NAogICAgaXR4bl9maWVsZCBDb25maWdBc3NldE5hbWUKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weTo2MgogICAgLy8gZGVmYXVsdF9mcm96ZW49RmFsc2UsCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBDb25maWdBc3NldERlZmF1bHRGcm96ZW4KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weTo2MQogICAgLy8gZGVjaW1hbHM9MCwKICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0RGVjaW1hbHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weTo2MAogICAgLy8gdG90YWw9MSwKICAgIGludGNfMSAvLyAxCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0VG90YWwKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weTo1OQogICAgLy8gY3JlYXRlZCA9IGl0eG4uQXNzZXRDb25maWcoCiAgICBwdXNoaW50IDMgLy8gYWNmZwogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjY5CiAgICAvLyBmZWU9MTAwMCwKICAgIHB1c2hpbnQgMTAwMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weTo1OS03MAogICAgLy8gY3JlYXRlZCA9IGl0eG4uQXNzZXRDb25maWcoCiAgICAvLyAgICAgdG90YWw9MSwKICAgIC8vICAgICBkZWNpbWFscz0wLAogICAgLy8gICAgIGRlZmF1bHRfZnJvemVuPUZhbHNlLAogICAgLy8gICAgIGFzc2V0X25hbWU9YiJGdXR1cmUgRWFybmluZyBORlQiLAogICAgLy8gICAgIHVuaXRfbmFtZT1iIkZFTkZUIiwKICAgIC8vICAgICAjIEFSQy0xOSB0ZW1wbGF0ZSBVUkwgKENJRCBzb3VyY2VkIGZyb20gcmVzZXJ2ZSBhY2NvdW50IGJ5IGNsaWVudHMpLgogICAgLy8gICAgIHVybD1iInRlbXBsYXRlLWlwZnM6Ly97aXBmc2NpZDoxOnJhdzpyZXNlcnZlOnNoYTItMjU2fSIsCiAgICAvLyAgICAgbWFuYWdlcj1HbG9iYWwuY3VycmVudF9hcHBsaWNhdGlvbl9hZGRyZXNzLAogICAgLy8gICAgIHJlc2VydmU9R2xvYmFsLmN1cnJlbnRfYXBwbGljYXRpb25fYWRkcmVzcywKICAgIC8vICAgICBmZWU9MTAwMCwKICAgIC8vICkuc3VibWl0KCkKICAgIGl0eG5fc3VibWl0CiAgICBpdHhuIENyZWF0ZWRBc3NldElECiAgICBidXJ5IDMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weTo3MQogICAgLy8gaWYgaWR4ID09IFVJbnQ2NCgwKToKICAgIGR1cAogICAgYm56IG1pbnRfZnV0dXJlX25mdF9hZnRlcl9pZl9lbHNlQDYKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weTo3MgogICAgLy8gc2VsZi5maXJzdF9hc3NldF9pZC52YWx1ZSA9IGNyZWF0ZWQuY3JlYXRlZF9hc3NldC5pZAogICAgYnl0ZWMgMTAgLy8gImZpcnN0X2Fzc2V0X2lkIgogICAgZGlnIDMKICAgIGFwcF9nbG9iYWxfcHV0CgptaW50X2Z1dHVyZV9uZnRfYWZ0ZXJfaWZfZWxzZUA2OgogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjczCiAgICAvLyBzZWxmLm1pbnRlZF9hc3NldHNbY3JlYXRlZC5jcmVhdGVkX2Fzc2V0LmlkXSA9IFVJbnQ2NCgxKQogICAgZGlnIDIKICAgIGl0b2IKICAgIGJ5dGVjIDcgLy8gIm1hXyIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgaW50Y18xIC8vIDEKICAgIGl0b2IKICAgIGJveF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weTo1Ny01OAogICAgLy8gIyBNaW50IGEgZml4ZWQgc2VyaWVzIG9mIEFSQy0xOSBzdHlsZSBORlRzIGZyb20gdGhlIGFwcCBhY2NvdW50LgogICAgLy8gZm9yIGlkeCBpbiB1cmFuZ2UodG90YWxfbmZ0cyk6CiAgICBkdXAKICAgIGludGNfMSAvLyAxCiAgICArCiAgICBidXJ5IDEKICAgIGIgbWludF9mdXR1cmVfbmZ0X2Zvcl9oZWFkZXJAMgoKbWludF9mdXR1cmVfbmZ0X2FmdGVyX2ZvckA4OgogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjI1CiAgICAvLyBAYXJjNC5hYmltZXRob2QKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCgovLyBzbWFydF9jb250cmFjdHMuYWxnb21pbnQuY29udHJhY3QuQWxnb21pbnQuYnV5X25mdFtyb3V0aW5nXSgpIC0+IHZvaWQ6CmJ1eV9uZnQ6CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6NzUKICAgIC8vIEBhcmM0LmFiaW1ldGhvZAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwCiAgICBsZW4KICAgIGludGNfMiAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgdHhuIEdyb3VwSW5kZXgKICAgIHB1c2hpbnQgMgogICAgLQogICAgZHVwCiAgICBndHhucyBUeXBlRW51bQogICAgcHVzaGludCA0IC8vIGF4ZmVyCiAgICA9PQogICAgYXNzZXJ0IC8vIHRyYW5zYWN0aW9uIHR5cGUgaXMgYXhmZXIKICAgIHR4biBHcm91cEluZGV4CiAgICBpbnRjXzEgLy8gMQogICAgLQogICAgZHVwCiAgICBndHhucyBUeXBlRW51bQogICAgaW50Y18xIC8vIHBheQogICAgPT0KICAgIGFzc2VydCAvLyB0cmFuc2FjdGlvbiB0eXBlIGlzIHBheQogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjgyCiAgICAvLyBhc3NlcnQgc2VsZi5pbml0aWFsaXplZC52YWx1ZQogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjXzAgLy8gImluaXRpYWxpemVkIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmluaXRpYWxpemVkIGV4aXN0cwogICAgYXNzZXJ0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6ODMKICAgIC8vIGFzc2VydCBhc3NldF9pZCA+IFVJbnQ2NCgwKQogICAgZGlnIDIKICAgIGFzc2VydAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5Ojg0CiAgICAvLyBhc3NlcnQgc2VsZi5taW50ZWRfYXNzZXRzLmdldChhc3NldF9pZCwgZGVmYXVsdD1VSW50NjQoMCkpID09IFVJbnQ2NCgxKQogICAgZGlnIDIKICAgIGl0b2IKICAgIGJ5dGVjIDcgLy8gIm1hXyIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgYm94X2dldAogICAgc3dhcAogICAgYnRvaQogICAgaW50Y18wIC8vIDAKICAgIHN3YXAKICAgIHVuY292ZXIgMgogICAgc2VsZWN0CiAgICBpbnRjXzEgLy8gMQogICAgPT0KICAgIGFzc2VydAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5Ojg4LTg5CiAgICAvLyAjIEVuc3VyZSBidXllciBoYXMgb3B0ZWQtaW4gaW4gdGhlIHNhbWUgZ3JvdXAuCiAgICAvLyBhc3NlcnQgb3B0X2luLnNlbmRlciA9PSBUeG4uc2VuZGVyCiAgICBkaWcgMQogICAgZ3R4bnMgU2VuZGVyCiAgICB0eG4gU2VuZGVyCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6OTAKICAgIC8vIGFzc2VydCBvcHRfaW4uYXNzZXRfcmVjZWl2ZXIgPT0gVHhuLnNlbmRlcgogICAgZGlnIDEKICAgIGd0eG5zIEFzc2V0UmVjZWl2ZXIKICAgIHR4biBTZW5kZXIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weTo5MQogICAgLy8gYXNzZXJ0IG9wdF9pbi54ZmVyX2Fzc2V0LmlkID09IGFzc2V0LmlkCiAgICBkaWcgMQogICAgZ3R4bnMgWGZlckFzc2V0CiAgICBkaWcgMwogICAgPT0KICAgIGFzc2VydAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjkyCiAgICAvLyBhc3NlcnQgb3B0X2luLmFzc2V0X2Ftb3VudCA9PSBVSW50NjQoMCkKICAgIHN3YXAKICAgIGd0eG5zIEFzc2V0QW1vdW50CiAgICAhCiAgICBhc3NlcnQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weTo5NAogICAgLy8gYXNzZXJ0IHBheW1lbnQuc2VuZGVyID09IFR4bi5zZW5kZXIKICAgIGR1cAogICAgZ3R4bnMgU2VuZGVyCiAgICB0eG4gU2VuZGVyCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6OTUKICAgIC8vIGFzc2VydCBwYXltZW50LnJlY2VpdmVyID09IEdsb2JhbC5jdXJyZW50X2FwcGxpY2F0aW9uX2FkZHJlc3MKICAgIGR1cAogICAgZ3R4bnMgUmVjZWl2ZXIKICAgIGdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6OTYKICAgIC8vIGFzc2VydCBwYXltZW50LmFtb3VudCA9PSBzZWxmLnNhbGVfcHJpY2UudmFsdWUKICAgIGd0eG5zIEFtb3VudAogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjIDQgLy8gInNhbGVfcHJpY2UiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuc2FsZV9wcmljZSBleGlzdHMKICAgIGRpZyAxCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6OTgKICAgIC8vIGFwcF9iYWxhbmNlLCBhcHBfb3B0ZWQgPSBvcC5Bc3NldEhvbGRpbmdHZXQuYXNzZXRfYmFsYW5jZShHbG9iYWwuY3VycmVudF9hcHBsaWNhdGlvbl9hZGRyZXNzLCBhc3NldCkKICAgIGdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCiAgICBkaWcgMgogICAgYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6OTkKICAgIC8vIGFzc2VydCBhcHBfb3B0ZWQKICAgIGFzc2VydAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjEwMAogICAgLy8gYXNzZXJ0IGFwcF9iYWxhbmNlID09IFVJbnQ2NCgxKQogICAgaW50Y18xIC8vIDEKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weToxMDItMTA4CiAgICAvLyAjIFRyYW5zZmVyIE5GVCB0byBpbnZlc3RvciBhbmQgZm9yd2FyZCBwYXltZW50IHRvIGNyZWF0b3IuCiAgICAvLyBpdHhuLkFzc2V0VHJhbnNmZXIoCiAgICAvLyAgICAgeGZlcl9hc3NldD1hc3NldCwKICAgIC8vICAgICBhc3NldF9yZWNlaXZlcj1UeG4uc2VuZGVyLAogICAgLy8gICAgIGFzc2V0X2Ftb3VudD1VSW50NjQoMSksCiAgICAvLyAgICAgZmVlPTAsCiAgICAvLyApLnN1Ym1pdCgpCiAgICBpdHhuX2JlZ2luCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTA1CiAgICAvLyBhc3NldF9yZWNlaXZlcj1UeG4uc2VuZGVyLAogICAgdHhuIFNlbmRlcgogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjEwNgogICAgLy8gYXNzZXRfYW1vdW50PVVJbnQ2NCgxKSwKICAgIGludGNfMSAvLyAxCiAgICBpdHhuX2ZpZWxkIEFzc2V0QW1vdW50CiAgICBpdHhuX2ZpZWxkIEFzc2V0UmVjZWl2ZXIKICAgIHN3YXAKICAgIGl0eG5fZmllbGQgWGZlckFzc2V0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTAyLTEwMwogICAgLy8gIyBUcmFuc2ZlciBORlQgdG8gaW52ZXN0b3IgYW5kIGZvcndhcmQgcGF5bWVudCB0byBjcmVhdG9yLgogICAgLy8gaXR4bi5Bc3NldFRyYW5zZmVyKAogICAgcHVzaGludCA0IC8vIGF4ZmVyCiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTA3CiAgICAvLyBmZWU9MCwKICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjEwMi0xMDgKICAgIC8vICMgVHJhbnNmZXIgTkZUIHRvIGludmVzdG9yIGFuZCBmb3J3YXJkIHBheW1lbnQgdG8gY3JlYXRvci4KICAgIC8vIGl0eG4uQXNzZXRUcmFuc2ZlcigKICAgIC8vICAgICB4ZmVyX2Fzc2V0PWFzc2V0LAogICAgLy8gICAgIGFzc2V0X3JlY2VpdmVyPVR4bi5zZW5kZXIsCiAgICAvLyAgICAgYXNzZXRfYW1vdW50PVVJbnQ2NCgxKSwKICAgIC8vICAgICBmZWU9MCwKICAgIC8vICkuc3VibWl0KCkKICAgIGl0eG5fc3VibWl0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTA5LTExMwogICAgLy8gaXR4bi5QYXltZW50KAogICAgLy8gICAgIHJlY2VpdmVyPXNlbGYuY3JlYXRvci52YWx1ZSwKICAgIC8vICAgICBhbW91bnQ9cGF5bWVudC5hbW91bnQsCiAgICAvLyAgICAgZmVlPTAsCiAgICAvLyApLnN1Ym1pdCgpCiAgICBpdHhuX2JlZ2luCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTEwCiAgICAvLyByZWNlaXZlcj1zZWxmLmNyZWF0b3IudmFsdWUsCiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWMgNiAvLyAiY3JlYXRvciIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5jcmVhdG9yIGV4aXN0cwogICAgaXR4bl9maWVsZCBSZWNlaXZlcgogICAgaXR4bl9maWVsZCBBbW91bnQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weToxMDkKICAgIC8vIGl0eG4uUGF5bWVudCgKICAgIGludGNfMSAvLyBwYXkKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weToxMTIKICAgIC8vIGZlZT0wLAogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTA5LTExMwogICAgLy8gaXR4bi5QYXltZW50KAogICAgLy8gICAgIHJlY2VpdmVyPXNlbGYuY3JlYXRvci52YWx1ZSwKICAgIC8vICAgICBhbW91bnQ9cGF5bWVudC5hbW91bnQsCiAgICAvLyAgICAgZmVlPTAsCiAgICAvLyApLnN1Ym1pdCgpCiAgICBpdHhuX3N1Ym1pdAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5Ojc1CiAgICAvLyBAYXJjNC5hYmltZXRob2QKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCgovLyBzbWFydF9jb250cmFjdHMuYWxnb21pbnQuY29udHJhY3QuQWxnb21pbnQucmVwb3J0X2luY29tZVtyb3V0aW5nXSgpIC0+IHZvaWQ6CnJlcG9ydF9pbmNvbWU6CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTE1CiAgICAvLyBAYXJjNC5hYmltZXRob2QKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzIgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIGJ0b2kKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzIgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIGJ0b2kKICAgIHR4biBHcm91cEluZGV4CiAgICBpbnRjXzEgLy8gMQogICAgLQogICAgZHVwCiAgICBndHhucyBUeXBlRW51bQogICAgaW50Y18xIC8vIHBheQogICAgPT0KICAgIGFzc2VydCAvLyB0cmFuc2FjdGlvbiB0eXBlIGlzIHBheQogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjExOQogICAgLy8gYXNzZXJ0IHNlbGYuaW5pdGlhbGl6ZWQudmFsdWUKICAgIGludGNfMCAvLyAwCiAgICBieXRlY18wIC8vICJpbml0aWFsaXplZCIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5pbml0aWFsaXplZCBleGlzdHMKICAgIGFzc2VydAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjEyMAogICAgLy8gYXNzZXJ0IFR4bi5zZW5kZXIgPT0gc2VsZi5jcmVhdG9yLnZhbHVlCiAgICB0eG4gU2VuZGVyCiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWMgNiAvLyAiY3JlYXRvciIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5jcmVhdG9yIGV4aXN0cwogICAgPT0KICAgIGFzc2VydAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjEyMQogICAgLy8gYXNzZXJ0IHF1YXJ0ZXIgPiBzZWxmLmxhc3RfcmVwb3J0ZWRfcXVhcnRlci52YWx1ZQogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjXzEgLy8gImxhc3RfcmVwb3J0ZWRfcXVhcnRlciIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5sYXN0X3JlcG9ydGVkX3F1YXJ0ZXIgZXhpc3RzCiAgICBkaWcgMwogICAgPAogICAgYXNzZXJ0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTIyCiAgICAvLyBhc3NlcnQgaW5jb21lX2Ftb3VudCA+IFVJbnQ2NCgwKQogICAgZGlnIDEKICAgIGFzc2VydAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjEyNAogICAgLy8gdG90YWxfcGF5b3V0ID0gKGluY29tZV9hbW91bnQgKiBzZWxmLnRvdGFsX3BjdF9icHMudmFsdWUpIC8vIFVJbnQ2NCgxMF8wMDApCiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWNfMyAvLyAidG90YWxfcGN0X2JwcyIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi50b3RhbF9wY3RfYnBzIGV4aXN0cwogICAgZGlnIDIKICAgICoKICAgIGludGNfMyAvLyAxMDAwMAogICAgLwogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjEyNQogICAgLy8gYXNzZXJ0IHRvdGFsX3BheW91dCA+IFVJbnQ2NCgwKQogICAgZHVwCiAgICBhc3NlcnQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weToxMjctMTI4CiAgICAvLyAjIFJlcXVpcmUgdGhlIGNyZWF0b3IgdG8gZnVuZCB0aGUgYXBwIGZvciB0aGlzIHF1YXJ0ZXIncyBwYXlvdXRzLgogICAgLy8gYXNzZXJ0IHBheW91dF9mdW5kaW5nLnNlbmRlciA9PSBUeG4uc2VuZGVyCiAgICBkaWcgMQogICAgZ3R4bnMgU2VuZGVyCiAgICB0eG4gU2VuZGVyCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTI5CiAgICAvLyBhc3NlcnQgcGF5b3V0X2Z1bmRpbmcucmVjZWl2ZXIgPT0gR2xvYmFsLmN1cnJlbnRfYXBwbGljYXRpb25fYWRkcmVzcwogICAgZGlnIDEKICAgIGd0eG5zIFJlY2VpdmVyCiAgICBnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwogICAgPT0KICAgIGFzc2VydAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjEzMAogICAgLy8gYXNzZXJ0IHBheW91dF9mdW5kaW5nLmFtb3VudCA9PSB0b3RhbF9wYXlvdXQKICAgIHN3YXAKICAgIGd0eG5zIEFtb3VudAogICAgZGlnIDEKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weToxMzIKICAgIC8vIHNlbGYubGFzdF9yZXBvcnRlZF9xdWFydGVyLnZhbHVlID0gcXVhcnRlcgogICAgYnl0ZWNfMSAvLyAibGFzdF9yZXBvcnRlZF9xdWFydGVyIgogICAgdW5jb3ZlciAzCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjEzMwogICAgLy8gc2VsZi5sYXN0X3JlcG9ydGVkX2luY29tZS52YWx1ZSA9IGluY29tZV9hbW91bnQKICAgIGJ5dGVjIDEyIC8vICJsYXN0X3JlcG9ydGVkX2luY29tZSIKICAgIHVuY292ZXIgMgogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weToxMzQKICAgIC8vIHNlbGYucGF5b3V0X3Blcl9uZnQudmFsdWUgPSB0b3RhbF9wYXlvdXQgLy8gc2VsZi50b3RhbF9uZnRzLnZhbHVlCiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWNfMiAvLyAidG90YWxfbmZ0cyIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi50b3RhbF9uZnRzIGV4aXN0cwogICAgLwogICAgYnl0ZWMgNSAvLyAicGF5b3V0X3Blcl9uZnQiCiAgICBzd2FwCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjExNQogICAgLy8gQGFyYzQuYWJpbWV0aG9kCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLmFsZ29taW50LmNvbnRyYWN0LkFsZ29taW50LmNsYWltX3BheW91dFtyb3V0aW5nXSgpIC0+IHZvaWQ6CmNsYWltX3BheW91dDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weToxMzYKICAgIC8vIEBhcmM0LmFiaW1ldGhvZAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwCiAgICBsZW4KICAgIGludGNfMiAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjEzOAogICAgLy8gYXNzZXJ0IHNlbGYuaW5pdGlhbGl6ZWQudmFsdWUKICAgIGludGNfMCAvLyAwCiAgICBieXRlY18wIC8vICJpbml0aWFsaXplZCIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5pbml0aWFsaXplZCBleGlzdHMKICAgIGFzc2VydAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjEzOQogICAgLy8gYXNzZXJ0IGFzc2V0X2lkID4gVUludDY0KDApCiAgICBkdXAKICAgIGFzc2VydAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjE0MAogICAgLy8gYXNzZXJ0IHNlbGYubWludGVkX2Fzc2V0cy5nZXQoYXNzZXRfaWQsIGRlZmF1bHQ9VUludDY0KDApKSA9PSBVSW50NjQoMSkKICAgIGR1cAogICAgaXRvYgogICAgYnl0ZWMgNyAvLyAibWFfIgogICAgZGlnIDEKICAgIGNvbmNhdAogICAgYm94X2dldAogICAgc3dhcAogICAgYnRvaQogICAgaW50Y18wIC8vIDAKICAgIHN3YXAKICAgIHVuY292ZXIgMgogICAgc2VsZWN0CiAgICBpbnRjXzEgLy8gMQogICAgPT0KICAgIGFzc2VydAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjE0MQogICAgLy8gYXNzZXJ0IHNlbGYubGFzdF9yZXBvcnRlZF9xdWFydGVyLnZhbHVlID4gVUludDY0KDApCiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWNfMSAvLyAibGFzdF9yZXBvcnRlZF9xdWFydGVyIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmxhc3RfcmVwb3J0ZWRfcXVhcnRlciBleGlzdHMKICAgIGR1cAogICAgYXNzZXJ0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTQzCiAgICAvLyBob2xkZXJfYmFsYW5jZSwgaG9sZGVyX29wdGVkID0gb3AuQXNzZXRIb2xkaW5nR2V0LmFzc2V0X2JhbGFuY2UoVHhuLnNlbmRlciwgQXNzZXQoYXNzZXRfaWQpKQogICAgdHhuIFNlbmRlcgogICAgdW5jb3ZlciAzCiAgICBhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weToxNDQKICAgIC8vIGFzc2VydCBob2xkZXJfb3B0ZWQKICAgIGFzc2VydAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjE0NQogICAgLy8gYXNzZXJ0IGhvbGRlcl9iYWxhbmNlID09IFVJbnQ2NCgxKQogICAgaW50Y18xIC8vIDEKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weToxNDcKICAgIC8vIGNsYWltZWQgPSBzZWxmLmxhc3RfY2xhaW1lZF9xdWFydGVyLmdldChhc3NldF9pZCwgZGVmYXVsdD1VSW50NjQoMCkpCiAgICBieXRlYyAxMyAvLyAibGNfIgogICAgdW5jb3ZlciAyCiAgICBjb25jYXQKICAgIGR1cAogICAgYm94X2dldAogICAgc3dhcAogICAgYnRvaQogICAgaW50Y18wIC8vIDAKICAgIHN3YXAKICAgIHVuY292ZXIgMgogICAgc2VsZWN0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTQ4CiAgICAvLyBhc3NlcnQgY2xhaW1lZCA8IHNlbGYubGFzdF9yZXBvcnRlZF9xdWFydGVyLnZhbHVlCiAgICBkaWcgMgogICAgPAogICAgYXNzZXJ0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTQ5CiAgICAvLyBhc3NlcnQgc2VsZi5wYXlvdXRfcGVyX25mdC52YWx1ZSA+IFVJbnQ2NCgwKQogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjIDUgLy8gInBheW91dF9wZXJfbmZ0IgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLnBheW91dF9wZXJfbmZ0IGV4aXN0cwogICAgZHVwCiAgICBhc3NlcnQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weToxNTEtMTU1CiAgICAvLyBpdHhuLlBheW1lbnQoCiAgICAvLyAgICAgYW1vdW50PXNlbGYucGF5b3V0X3Blcl9uZnQudmFsdWUsCiAgICAvLyAgICAgcmVjZWl2ZXI9VHhuLnNlbmRlciwKICAgIC8vICAgICBmZWU9MCwKICAgIC8vICkuc3VibWl0KCkKICAgIGl0eG5fYmVnaW4KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weToxNTMKICAgIC8vIHJlY2VpdmVyPVR4bi5zZW5kZXIsCiAgICB0eG4gU2VuZGVyCiAgICBpdHhuX2ZpZWxkIFJlY2VpdmVyCiAgICBpdHhuX2ZpZWxkIEFtb3VudAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjE1MQogICAgLy8gaXR4bi5QYXltZW50KAogICAgaW50Y18xIC8vIHBheQogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjE1NAogICAgLy8gZmVlPTAsCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weToxNTEtMTU1CiAgICAvLyBpdHhuLlBheW1lbnQoCiAgICAvLyAgICAgYW1vdW50PXNlbGYucGF5b3V0X3Blcl9uZnQudmFsdWUsCiAgICAvLyAgICAgcmVjZWl2ZXI9VHhuLnNlbmRlciwKICAgIC8vICAgICBmZWU9MCwKICAgIC8vICkuc3VibWl0KCkKICAgIGl0eG5fc3VibWl0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTU3CiAgICAvLyBzZWxmLmxhc3RfY2xhaW1lZF9xdWFydGVyW2Fzc2V0X2lkXSA9IHNlbGYubGFzdF9yZXBvcnRlZF9xdWFydGVyLnZhbHVlCiAgICBzd2FwCiAgICBpdG9iCiAgICBib3hfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTM2CiAgICAvLyBAYXJjNC5hYmltZXRob2QKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCgovLyBzbWFydF9jb250cmFjdHMuYWxnb21pbnQuY29udHJhY3QuQWxnb21pbnQuZ2V0X3BlbmRpbmdfcGF5b3V0W3JvdXRpbmddKCkgLT4gdm9pZDoKZ2V0X3BlbmRpbmdfcGF5b3V0OgogICAgcHVzaGJ5dGVzICIiCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTU5CiAgICAvLyBAYXJjNC5hYmltZXRob2QocmVhZG9ubHk9VHJ1ZSkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzIgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIGJ0b2kKICAgIGR1cAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgZHVwCiAgICBjb3ZlciAyCiAgICBkdXAKICAgIGxlbgogICAgcHVzaGludCAzMgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5zdGF0aWNfYXJyYXk8YXJjNC51aW50OCwgMzI+CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTYxCiAgICAvLyBhc3NlcnQgc2VsZi5pbml0aWFsaXplZC52YWx1ZQogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjXzAgLy8gImluaXRpYWxpemVkIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmluaXRpYWxpemVkIGV4aXN0cwogICAgYXNzZXJ0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTYyCiAgICAvLyBhc3NlcnQgYXNzZXRfaWQgPiBVSW50NjQoMCkKICAgIGRpZyAxCiAgICBhc3NlcnQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weToxNjMKICAgIC8vIGFzc2VydCBzZWxmLm1pbnRlZF9hc3NldHMuZ2V0KGFzc2V0X2lkLCBkZWZhdWx0PVVJbnQ2NCgwKSkgPT0gVUludDY0KDEpCiAgICBzd2FwCiAgICBpdG9iCiAgICBkdXAKICAgIGNvdmVyIDIKICAgIGJ5dGVjIDcgLy8gIm1hXyIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgYm94X2dldAogICAgc3dhcAogICAgYnRvaQogICAgaW50Y18wIC8vIDAKICAgIHN3YXAKICAgIHVuY292ZXIgMgogICAgc2VsZWN0CiAgICBpbnRjXzEgLy8gMQogICAgPT0KICAgIGFzc2VydAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjE2NAogICAgLy8gYXNzZXJ0IGFkZHJlc3MgIT0gR2xvYmFsLnplcm9fYWRkcmVzcwogICAgZ2xvYmFsIFplcm9BZGRyZXNzCiAgICAhPQogICAgYXNzZXJ0CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTY2CiAgICAvLyBpZiBzZWxmLmxhc3RfcmVwb3J0ZWRfcXVhcnRlci52YWx1ZSA9PSBVSW50NjQoMCk6CiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWNfMSAvLyAibGFzdF9yZXBvcnRlZF9xdWFydGVyIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmxhc3RfcmVwb3J0ZWRfcXVhcnRlciBleGlzdHMKICAgIGJueiBnZXRfcGVuZGluZ19wYXlvdXRfYWZ0ZXJfaWZfZWxzZUAzCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTY3CiAgICAvLyByZXR1cm4gVUludDY0KDApCiAgICBpbnRjXzAgLy8gMAoKZ2V0X3BlbmRpbmdfcGF5b3V0X2FmdGVyX2lubGluZWRfc21hcnRfY29udHJhY3RzLmFsZ29taW50LmNvbnRyYWN0LkFsZ29taW50LmdldF9wZW5kaW5nX3BheW91dEAxMDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weToxNTkKICAgIC8vIEBhcmM0LmFiaW1ldGhvZChyZWFkb25seT1UcnVlKQogICAgaXRvYgogICAgYnl0ZWMgMTQgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCmdldF9wZW5kaW5nX3BheW91dF9hZnRlcl9pZl9lbHNlQDM6CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTY5CiAgICAvLyBob2xkZXJfYmFsYW5jZSwgaG9sZGVyX29wdGVkID0gb3AuQXNzZXRIb2xkaW5nR2V0LmFzc2V0X2JhbGFuY2UoYWRkcmVzcywgQXNzZXQoYXNzZXRfaWQpKQogICAgZGlnIDEKICAgIGRpZyAzCiAgICBhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKICAgIHN3YXAKICAgIGJ1cnkgNQogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjE3MAogICAgLy8gaWYgbm90IGhvbGRlcl9vcHRlZDoKICAgIGJueiBnZXRfcGVuZGluZ19wYXlvdXRfYWZ0ZXJfaWZfZWxzZUA1CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTcxCiAgICAvLyByZXR1cm4gVUludDY0KDApCiAgICBpbnRjXzAgLy8gMAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjE1OQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHJlYWRvbmx5PVRydWUpCiAgICBiIGdldF9wZW5kaW5nX3BheW91dF9hZnRlcl9pbmxpbmVkX3NtYXJ0X2NvbnRyYWN0cy5hbGdvbWludC5jb250cmFjdC5BbGdvbWludC5nZXRfcGVuZGluZ19wYXlvdXRAMTAKCmdldF9wZW5kaW5nX3BheW91dF9hZnRlcl9pZl9lbHNlQDU6CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTcyCiAgICAvLyBpZiBob2xkZXJfYmFsYW5jZSAhPSBVSW50NjQoMSk6CiAgICBkaWcgMwogICAgaW50Y18xIC8vIDEKICAgICE9CiAgICBieiBnZXRfcGVuZGluZ19wYXlvdXRfYWZ0ZXJfaWZfZWxzZUA3CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTczCiAgICAvLyByZXR1cm4gVUludDY0KDApCiAgICBpbnRjXzAgLy8gMAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjE1OQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHJlYWRvbmx5PVRydWUpCiAgICBiIGdldF9wZW5kaW5nX3BheW91dF9hZnRlcl9pbmxpbmVkX3NtYXJ0X2NvbnRyYWN0cy5hbGdvbWludC5jb250cmFjdC5BbGdvbWludC5nZXRfcGVuZGluZ19wYXlvdXRAMTAKCmdldF9wZW5kaW5nX3BheW91dF9hZnRlcl9pZl9lbHNlQDc6CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTc1CiAgICAvLyBjbGFpbWVkID0gc2VsZi5sYXN0X2NsYWltZWRfcXVhcnRlci5nZXQoYXNzZXRfaWQsIGRlZmF1bHQ9VUludDY0KDApKQogICAgYnl0ZWMgMTMgLy8gImxjXyIKICAgIGRpZyAxCiAgICBjb25jYXQKICAgIGJveF9nZXQKICAgIHN3YXAKICAgIGJ0b2kKICAgIGludGNfMCAvLyAwCiAgICBzd2FwCiAgICB1bmNvdmVyIDIKICAgIHNlbGVjdAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjE3NgogICAgLy8gaWYgY2xhaW1lZCA8IHNlbGYubGFzdF9yZXBvcnRlZF9xdWFydGVyLnZhbHVlOgogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjXzEgLy8gImxhc3RfcmVwb3J0ZWRfcXVhcnRlciIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5sYXN0X3JlcG9ydGVkX3F1YXJ0ZXIgZXhpc3RzCiAgICA8CiAgICBieiBnZXRfcGVuZGluZ19wYXlvdXRfYWZ0ZXJfaWZfZWxzZUA5CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTc3CiAgICAvLyByZXR1cm4gc2VsZi5wYXlvdXRfcGVyX25mdC52YWx1ZQogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjIDUgLy8gInBheW91dF9wZXJfbmZ0IgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLnBheW91dF9wZXJfbmZ0IGV4aXN0cwogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjE1OQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHJlYWRvbmx5PVRydWUpCiAgICBiIGdldF9wZW5kaW5nX3BheW91dF9hZnRlcl9pbmxpbmVkX3NtYXJ0X2NvbnRyYWN0cy5hbGdvbWludC5jb250cmFjdC5BbGdvbWludC5nZXRfcGVuZGluZ19wYXlvdXRAMTAKCmdldF9wZW5kaW5nX3BheW91dF9hZnRlcl9pZl9lbHNlQDk6CiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTc4CiAgICAvLyByZXR1cm4gVUludDY0KDApCiAgICBpbnRjXzAgLy8gMAogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjE1OQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHJlYWRvbmx5PVRydWUpCiAgICBiIGdldF9wZW5kaW5nX3BheW91dF9hZnRlcl9pbmxpbmVkX3NtYXJ0X2NvbnRyYWN0cy5hbGdvbWludC5jb250cmFjdC5BbGdvbWludC5nZXRfcGVuZGluZ19wYXlvdXRAMTAKCgovLyBzbWFydF9jb250cmFjdHMuYWxnb21pbnQuY29udHJhY3QuQWxnb21pbnQuZ2V0X3Rlcm1zW3JvdXRpbmddKCkgLT4gdm9pZDoKZ2V0X3Rlcm1zOgogICAgaW50Y18wIC8vIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weToxODUtMTg3CiAgICAvLyAjIE11c3QgYmUgc2FmZSB0byBjYWxsIGJlZm9yZSBtaW50aW5nL2luaXRpYWxpemF0aW9uIChVSSBjYWxscyB0aGlzIGFmdGVyIGRlcGxveSkuCiAgICAvLyAjIFJldHVybiB6ZXJvL2RlZmF1bHQgdmFsdWVzIHVudGlsIGluaXRpYWxpemVkLgogICAgLy8gaWYgbm90IHNlbGYuaW5pdGlhbGl6ZWQudmFsdWU6CiAgICBkdXAKICAgIGJ5dGVjXzAgLy8gImluaXRpYWxpemVkIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmluaXRpYWxpemVkIGV4aXN0cwogICAgYm56IGdldF90ZXJtc19hZnRlcl9pZl9lbHNlQDMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weToxODkKICAgIC8vIEdsb2JhbC56ZXJvX2FkZHJlc3MsCiAgICBnbG9iYWwgWmVyb0FkZHJlc3MKICAgIGJ1cnkgMQogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjE5MAogICAgLy8gVUludDY0KDApLAogICAgaW50Y18wIC8vIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weToxOTEtMTk1CiAgICAvLyBVSW50NjQoMCksCiAgICAvLyBVSW50NjQoMCksCiAgICAvLyBVSW50NjQoMCksCiAgICAvLyBVSW50NjQoMCksCiAgICAvLyBVSW50NjQoMCksCiAgICBkdXBuIDUKCmdldF90ZXJtc19hZnRlcl9pbmxpbmVkX3NtYXJ0X2NvbnRyYWN0cy5hbGdvbWludC5jb250cmFjdC5BbGdvbWludC5nZXRfdGVybXNANDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weToxODAKICAgIC8vIEBhcmM0LmFiaW1ldGhvZChyZWFkb25seT1UcnVlKQogICAgdW5jb3ZlciA1CiAgICBpdG9iCiAgICBkaWcgNgogICAgc3dhcAogICAgY29uY2F0CiAgICB1bmNvdmVyIDUKICAgIGl0b2IKICAgIGNvbmNhdAogICAgdW5jb3ZlciA0CiAgICBpdG9iCiAgICBjb25jYXQKICAgIHVuY292ZXIgMwogICAgaXRvYgogICAgY29uY2F0CiAgICB1bmNvdmVyIDIKICAgIGl0b2IKICAgIGNvbmNhdAogICAgc3dhcAogICAgaXRvYgogICAgY29uY2F0CiAgICBieXRlYyAxNCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKZ2V0X3Rlcm1zX2FmdGVyX2lmX2Vsc2VAMzoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weToxOTgKICAgIC8vIHNlbGYuY3JlYXRvci52YWx1ZSwKICAgIGludGNfMCAvLyAwCiAgICBieXRlYyA2IC8vICJjcmVhdG9yIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmNyZWF0b3IgZXhpc3RzCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MTk5CiAgICAvLyBzZWxmLnRvdGFsX25mdHMudmFsdWUsCiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWNfMiAvLyAidG90YWxfbmZ0cyIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi50b3RhbF9uZnRzIGV4aXN0cwogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjIwMAogICAgLy8gc2VsZi50b3RhbF9wY3RfYnBzLnZhbHVlLAogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjXzMgLy8gInRvdGFsX3BjdF9icHMiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYudG90YWxfcGN0X2JwcyBleGlzdHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weToyMDEKICAgIC8vIHNlbGYuZHVyYXRpb25feWVhcnMudmFsdWUsCiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWMgOCAvLyAiZHVyYXRpb25feWVhcnMiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuZHVyYXRpb25feWVhcnMgZXhpc3RzCiAgICAvLyBzbWFydF9jb250cmFjdHMvYWxnb21pbnQvY29udHJhY3QucHk6MjAyCiAgICAvLyBzZWxmLnN0YXJ0X3F1YXJ0ZXIudmFsdWUsCiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWMgOSAvLyAic3RhcnRfcXVhcnRlciIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5zdGFydF9xdWFydGVyIGV4aXN0cwogICAgLy8gc21hcnRfY29udHJhY3RzL2FsZ29taW50L2NvbnRyYWN0LnB5OjIwMwogICAgLy8gc2VsZi5zYWxlX3ByaWNlLnZhbHVlLAogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjIDQgLy8gInNhbGVfcHJpY2UiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuc2FsZV9wcmljZSBleGlzdHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weToyMDQKICAgIC8vIHNlbGYuZmlyc3RfYXNzZXRfaWQudmFsdWUsCiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWMgMTAgLy8gImZpcnN0X2Fzc2V0X2lkIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmZpcnN0X2Fzc2V0X2lkIGV4aXN0cwogICAgdW5jb3ZlciA2CiAgICBidXJ5IDcKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9hbGdvbWludC9jb250cmFjdC5weToxODAKICAgIC8vIEBhcmM0LmFiaW1ldGhvZChyZWFkb25seT1UcnVlKQogICAgYiBnZXRfdGVybXNfYWZ0ZXJfaW5saW5lZF9zbWFydF9jb250cmFjdHMuYWxnb21pbnQuY29udHJhY3QuQWxnb21pbnQuZ2V0X3Rlcm1zQDQK","clear":"I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuY2xlYXJfc3RhdGVfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIHB1c2hpbnQgMQogICAgcmV0dXJuCg=="},"byteCode":{"approval":"CyAEAAEIkE4mDwtpbml0aWFsaXplZBVsYXN0X3JlcG9ydGVkX3F1YXJ0ZXIKdG90YWxfbmZ0cw10b3RhbF9wY3RfYnBzCnNhbGVfcHJpY2UOcGF5b3V0X3Blcl9uZnQHY3JlYXRvcgNtYV8OZHVyYXRpb25feWVhcnMNc3RhcnRfcXVhcnRlcg5maXJzdF9hc3NldF9pZA9wY3RfcGVyX25mdF9icHMUbGFzdF9yZXBvcnRlZF9pbmNvbWUDbGNfBBUffHUxGEAAKCoiZysiZycIImcnCSJnJwQiZycKImcnCyJnKSJnJwwiZycFImcoImcxG0EAOTEZFEQxGESCBgSsbhoEBN2YDm0EvY3JfgSUXxd3BFc3cXgEvvwWxTYaAI4GAAkBNQHUAj8CnQMhADEZFDEYFBBDgAA2GgFJFSQSRBdJNhoCSRUkEkQXNhoDSRUkEkQXNhoESRUkEkQXNhoFSRUkEkQXMRYjCUk4ECMSRCIoZUQUREsFREsEREsEJQ5ESwNESwJESwFESTgAMQASREk4BzIKEkQ4CIHAhD0PRCcGMQBnKk8FZytPBGcnCE8DZycJTwJnJwRMZyIrZUQiKmVECicLTGcoI2ciSUsCDEEAjbEyCkmyKrIpgDB0ZW1wbGF0ZS1pcGZzOi8ve2lwZnNjaWQ6MTpyYXc6cmVzZXJ2ZTpzaGEyLTI1Nn2yJ4AFRkVORlSyJYASRnV0dXJlIEVhcm5pbmcgTkZUsiYisiQisiMjsiKBA7IQgegHsgGztDxFA0lAAAUnCksDZ0sCFicHTFAjFr9JIwhFAUL/bCNDNhoBSRUkEkQXMRaBAglJOBCBBBJEMRYjCUk4ECMSRCIoZURESwJESwIWJwdMUL5MFyJMTwJNIxJESwE4ADEAEkRLATgUMQASREsBOBFLAxJETDgSFERJOAAxABJESTgHMgoSRDgIIicEZURLARJEMgpLAnAARCMSRLExACOyErIUTLIRgQSyECKyAbOxIicGZUSyB7III7IQIrIBsyNDNhoBSRUkEkQXNhoCSRUkEkQXMRYjCUk4ECMSRCIoZUREMQAiJwZlRBJEIillREsDDERLAUQiK2VESwILJQpJREsBOAAxABJESwE4BzIKEkRMOAhLARJEKU8DZycMTwJnIiplRAonBUxnI0M2GgFJFSQSRBciKGVERElESRYnB0sBUL5MFyJMTwJNIxJEIillRElEMQBPA3AARCMSRCcNTwJQSb5MFyJMTwJNSwIMRCInBWVESUSxMQCyB7III7IQIrIBs0wWvyNDgAA2GgFJFSQSRBdJNhoCSU4CSRWBIBJEIihlRERLAURMFklOAicHTFC+TBciTE8CTSMSRDIDE0QiKWVEQAAJIhYnDkxQsCNDSwFLA3AATEUFQAAEIkL/6EsDIxNBAAQiQv/dJw1LAVC+TBciTE8CTSIpZUQMQQAIIicFZURC/8AiQv+8IkkoZURAACgyA0UBIkcFTwUWSwZMUE8FFlBPBBZQTwMWUE8CFlBMFlAnDkxQsCNDIicGZUQiKmVEIitlRCInCGVEIicJZUQiJwRlRCInCmVETwZFB0L/tw==","clear":"C4EBQw=="},"compilerInfo":{"compiler":"puya","compilerVersion":{"major":5,"minor":8,"patch":0}},"events":[],"templateVariables":{}} as unknown as Arc56Contract /** * A state record containing binary data diff --git a/projects/hackalgo-frontend/src/hooks/useAlgoMint.ts b/projects/hackalgo-frontend/src/hooks/useAlgoMint.ts index f0140e1..2954fb6 100644 --- a/projects/hackalgo-frontend/src/hooks/useAlgoMint.ts +++ b/projects/hackalgo-frontend/src/hooks/useAlgoMint.ts @@ -243,7 +243,6 @@ export function useAlgoMint() { }) const group = client.newGroup() - group.addTransaction(mbrPaymentTxn, signer) group.mintFutureNft({ sender, signer, @@ -297,8 +296,6 @@ export function useAlgoMint() { }) const group = client.newGroup() - group.addTransaction(optInTxn, signer) - group.addTransaction(payTxn, signer) group.buyNft({ sender, signer, @@ -376,7 +373,6 @@ export function useAlgoMint() { }) const group = client.newGroup() - group.addTransaction(fundTxn, signer) group.reportIncome({ sender, signer,